解決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,可能是個不錯的選擇!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM