1. 程式人生 > 實用技巧 >解決mybatis-plus 無法更新空字串或者null問題

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