使用MyBatis-Plus updateById方法无法更新空字符串/null问题怎么解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
一、简介
因为最近在忙项目,好久都没有更新博客,最近在项目中刚好遇到一个问题,就是在使用MyBatis-Plus updateById(xxx)的时候,居然更新不了字符串或者null,本文分享两种解决方案,具体大家可以根据自己的需求选择一种方法解决。
二、原理
在实际项目中,难免更新的时候,有可能会把已有的值更新成空字符串或者null,但是当你使用updateById()方法的时候,会发现根本不生效。这其实是MyBatis-Plus对字段的验证策略导致的,MyBatis-Plus默认进行了不是全量更新的策略,查阅官网发现有一个属性:因为笔者使用的是springboot,下面是mybatis-plus配置文件:
mybatis-plus: global-config: #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断" field-strategy: 1
这个字段验证策略默认是1, 即NOT NULL,更新的时候做了null判断,默认不更新为null的传参。
field-strategy字段更新插入策略属性说明:
field-strategy字段更新插入策略属性说明:
三、解决方法
【第一种方法】:全局配置方式
在MyBatis-Plus配置文件中修改field-strategy字段验证的值为0,即忽略判断。
记住,光设置这个是不会进行判断了,但是你会发现更新插入操作的时候还是会报错,会报jdbcType不允许为空,这个时候,你需要确保你的PO对象(即@TableField(value="XSID")修饰字段的时候,还需要加入el属性,每个属性对应数据库的jdbcType类型,这样才能成功更新空值或null。如下图:
【第二种方法】:如果你设置的字段验证策略为非null判断
这个时候你会发现可以更新空字符串' ',但是一些比如Date等对象类型的设置空是要设置为null的,你会发现一样更新不了null,
由于表中的字段基本上都是varchar字符类型的,所以这个时候可以在PO中对类型为对象类型的属性通过注解对对象类型的属性单独设置字段验证策略为IGNORED如下图:
这样就可以成功更新值为null或者空字符串' '了,问题解决。
关于使用MyBatis-Plus updateById方法无法更新空字符串/null问题怎么解决问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。