使用mybatis-plus想要修改某字段為null問題
mybatis-plus想要修改某字段為null
問題場景
使用mybatis + mybatisPlus進行修改某字段,想要將其設(shè)為null, 但執(zhí)行時沒有成功。
原因
mybatis-plus會將所有為空的字段在修改時進行過濾,不進行設(shè)為空的修改操作。
解決辦法
在相關(guān)字段上加上注解
@TableField(strategy = FieldStrategy.IGNORED)
例:
@TableField(strategy = FieldStrategy.IGNORED) private Long classId;
mybatis-plus更新字段為null不生效
異常說明
mapper.updateById()時,set為null未生效,其他字段更新
periodRecordOriginal.setSettleTime(null); periodRecordOriginal.setActualSettleTime(null); periodRecordOriginal.setSettleStatus(0); int i = periodRecordMapper.updateById(periodRecordOriginal);
原理
MyBatis-Plus對字段的驗證策略導(dǎo)致的,MyBatis-Plus默認(rèn)進?了不是全量更新的策略,默認(rèn)忽略為null 的字段的
解決辦法
1)修改MyBatis-Plus 全局默認(rèn)策略
缺點:這樣做會對所有的字段都忽略判斷,如果一些字段不想要修改,但是傳值的時候沒有傳遞過來,就會被更新為null
mybatis-plus: ? global-config: ? ?? ?#字段策略 0:"忽略判斷",1:"非 NULL 判斷",2:"非空判斷" ? ? field-strategy: 0
2)修改實體類注解,改變字段的忽略判斷
缺點:需要注意數(shù)據(jù)庫字段是否設(shè)置為 非null ,如果為非null 也更新不成功
@TableField( updateStrategy = FieldStrategy.IGNORED) ? ? private Date settleTime;
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
一文探究ArrayBlockQueue函數(shù)及應(yīng)用場景
這篇文章主要為大家介紹了一文探究ArrayBlockQueue函數(shù)及應(yīng)用場景,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03
Java并發(fā)編程中的CyclicBarrier線程屏障詳解
這篇文章主要介紹了Java并發(fā)編程中的CyclicBarrier線程屏障詳解,2023-12-12
Java中?springcloud.openfeign應(yīng)用案例解析
使用OpenFeign能讓編寫Web?Service客戶端更加簡單,使用時只需定義服務(wù)接口,然后在上面添加注解,OpenFeign也支持可拔插式的編碼和解碼器,這篇文章主要介紹了Java中?springcloud.openfeign應(yīng)用案例解析,需要的朋友可以參考下2024-06-06
Spring Security LDAP實現(xiàn)身份驗證的項目實踐
在本文中,我們涵蓋了“使用 Spring Boot 的 Spring Security LDAP 身份驗證示例”的所有理論和示例部分,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
詳解springboot采用多數(shù)據(jù)源對JdbcTemplate配置的方法
在本篇文章中我們給大家詳細分享了springboot采用多數(shù)據(jù)源對JdbcTemplate配置的方法,有需要的朋友們可以學(xué)習(xí)參考下。2018-10-10

