解決mybatis-plus 無法更新空字串或者null問題
阿新 • • 發佈:2020-08-27
最近在工作的時候遇到使用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,可能是個不錯的選擇!