详解MyBatis-PlusupdateById⽅法更新不了空字符串null解决⽅法最近遇到了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字段更新插⼊策略属性说明:
IGNORED(0): "忽略判断", 所有字段都更新和插⼊
空字符串是什么NOT_NULL(1): "⾮ NULL 判断", 只更新和插⼊⾮NULL值
NOT_EMPTY(2): "⾮空判断", 只更新和插⼊⾮NULL值且⾮空字符串
DEFAULT:默认NOT_NULL
field-strategy字段更新插⼊策略属性说明:
IGNORED(0): "忽略判断", 所有字段都更新和插⼊
NOT_NULL(1): "⾮ NULL 判断", 只更新和插⼊⾮NULL值
NOT_EMPTY(2): "⾮空判断", 只更新和插⼊⾮NULL值且⾮空字符串
DEFAULT:默认NOT_NULL
三、解决⽅法
【第⼀种⽅法】:全局配置⽅式
在MyBatis-Plus配置⽂件中修改field-strategy字段验证的值为0,即忽略判断。
记住,光设置这个是不会进⾏判断了,但是你会发现更新插⼊操作的时候还是会报错,会报jdbcType不允许为空,这个时候,你需要确保你的PO对象(即@TableField(value="XSID")修饰字段的时候,还需要加⼊el属性,每个属性对应数据库的jdbcType类型,这样才能成功更新空值或null。如下图:
【第⼆种⽅法】:如果你设置的字段验证策略为⾮null判断
这个时候你会发现可以更新空字符串' ',但是⼀些⽐如Date等对象类型的设置空是要设置为null的,你会发现⼀样更新不了null,
由于表中的字段基本上都是varchar字符类型的,所以这个时候可以在PO中对类型为对象类型的属性通过注解对对象类型的属性单独设置字段验证策略
为IGNORED如下图:
这样就可以成功更新值为null或者空字符串' '了,问题解决。
四、总结
以上是笔者在实际项⽬中遇到mybatis-plus更新操作不⽣效的问题总结以及解决⽅案,读者可以根据具体需求选择适合⾃⼰的⼀种解决⽅法,希望能对⼤家有所帮助。
到此这篇关于详解MyBatis-Plus updateById⽅法更新不了空字符串/null解决⽅法的⽂章就介绍到这了,更多相关MyBatis-Plus updateById空字符串内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家
以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论