解决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")
2 private 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,可能是个不错的选择!

 

posted @ 2020-08-27 20:11  武小白  阅读(14659)  评论(2编辑  收藏  举报