解决mybatis-plus⽆法更新空字符串或者null问题
最近在⼯作的时候遇到使⽤mybatis-plus框架遇到⼀个⽆法更新空字符串和null的问题,看了很多博客⽂章,都没有解决掉,在此记录⼀下⾃⼰解决⽅式
xxxx.updateById(user)
⼀般都是调⽤updateById()这个⽅法导致⽆法把null或者空字符串更新到数据库中的。
通过查看mybatis-plus官⽅的api⽂档也记录了对应的解决⽅法,⼀共有三种解决的⽅法
第⼀种⽅式,对⾃⼰的系统影响有点⼤,不是很适合,果断放弃了,没有使⽤
null官方更新地址第⼆种⽅式,是实体类的需要传⼊null或者是空字符的属性中调整验证注解,但是只加strategy = FieldStrategy.IGNORED 是不⾏的,会报错,是因为没有指定该字段的jdbcType的类型,加上就可以解决掉
1 @TableField(strategy = FieldStrategy.IGNORED,el = "relationAccId,jdbcType=VARCHAR")
2private String relationAccId;
第三种⽅式,mybatis-plus的版本必须3.x以上才可以⽤,使⽤UpdateWrapper来更新
//updateAllColumnById(entity) // 全部字段更新: 3.0已经移除
mapper.update(
new User().setName("mp").setAge(3),
Wrappers.<User>lambdaUpdate()
.set(User::getEmail, null) //把email设置成null
.eq(User::getId, 2)
);
//也可以参考下⾯这种写法
mapper.update(
null,
Wrappers.<User>lambdaUpdate()
.set(User::getAge, 3)
.set(User::getName, "mp")
.set(User::getEmail, null) //把email设置成null
.eq(User::getId, 2)
);
还是官⽅API靠谱,遇到问题,可以先到官⽅⽹址查查API,可能是个不错的选择!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。