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