MyBatisPlus通過(guò)ID更新數(shù)據(jù)為NULL的四種方法
在使用 MyBatis-Plus 通過(guò) ID 更新數(shù)據(jù)時(shí),若需將字段值設(shè)為 null,可參考以下解決方案:
方法一:使用@TableField注解
在實(shí)體類(lèi)字段上添加注解,指定更新策略為忽略非空檢查:
public class User {
@TableField(strategy = FieldStrategy.IGNORED)
private String email;
}
調(diào)用 updateById 時(shí),該字段即使為 null 也會(huì)被更新。
方法二:使用UpdateWrapper手動(dòng)設(shè)置
通過(guò) UpdateWrapper 顯式指定需更新的字段:
User user = new User();
user.setId(1L);
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", user.getId())
.set("email", null); // 顯式設(shè)置 null
userMapper.update(null, updateWrapper);
此方法靈活控制需要更新的字段。
方法三:全局配置(謹(jǐn)慎使用)
在配置類(lèi)中設(shè)置全局更新策略為忽略非空檢查:
@Configuration
public class MybatisPlusConfig {
@Bean
public GlobalConfig globalConfig() {
GlobalConfig config = new GlobalConfig();
config.setDbConfig(new GlobalConfig.DbConfig()
.setUpdateStrategy(FieldStrategy.IGNORED));
return config;
}
}
注意:此配置會(huì)影響所有更新操作,需確保數(shù)據(jù)庫(kù)約束允許字段為 null。
方法四:使用lambdaUpdate
通過(guò) Lambda 表達(dá)式構(gòu)建更新條件:
User user = new User();
user.setId(1L);
userMapper.lambdaUpdate()
.eq(User::getId, user.getId())
.set(User::getEmail, null)
.update();
簡(jiǎn)潔且類(lèi)型安全。
總結(jié)
- 個(gè)別字段處理:使用
@TableField注解。 - 靈活單次更新:選擇
UpdateWrapper或lambdaUpdate。 - 全局處理(謹(jǐn)慎):配置全局策略。
注意事項(xiàng):
- 確保數(shù)據(jù)庫(kù)字段允許
NULL,否則會(huì)引發(fā)異常。 - 全局配置需全面測(cè)試,避免意外覆蓋非空字段。
- 根據(jù) MyBatis-Plus 版本調(diào)整策略名稱(chēng)(如
FieldStrategy在 3.x 后更名為FieldFill等)。
到此這篇關(guān)于MyBatisPlus通過(guò)ID更新數(shù)據(jù)為NULL的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)MyBatisPlus更新為NULL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)域匯總
這篇文章主要給大家介紹了關(guān)于Java虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)域的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
windows下zookeeper配置java環(huán)境變量的方法
今天小編就為大家分享一篇關(guān)于windows下zookeeper配置java環(huán)境變量的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
IDEA解決springboot熱部署失效問(wèn)題(推薦)
熱部署,就是在應(yīng)用正在運(yùn)行的時(shí)候升級(jí)軟件,卻不需要重新啟動(dòng)應(yīng)用。這篇文章主要介紹了IDEA解決springboot熱部署失效問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
關(guān)于ThreadLocal使用時(shí)OOM的討論
這篇文章主要介紹了關(guān)于ThreadLocal使用時(shí)OOM的討論,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-06-06
java實(shí)現(xiàn)兩個(gè)對(duì)象之間傳值及簡(jiǎn)單的封裝
這篇文章主要介紹了java實(shí)現(xiàn)兩個(gè)對(duì)象之間傳值及簡(jiǎn)單的封裝,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Java開(kāi)發(fā)過(guò)程中關(guān)于異常處理的詳解
異常是程序中的一些錯(cuò)誤,但不是所有錯(cuò)誤都是異常,且錯(cuò)誤有時(shí)候是可以避免的。比如說(shuō),你的代碼少一個(gè)分號(hào),那運(yùn)行出來(lái)結(jié)果是提示是錯(cuò)誤 java.lang.Error;如果你用System.out.println(11/0),那么你是因?yàn)槟阌?做了除數(shù),會(huì)拋出 java.lang.ArithmeticException 的異常2021-10-10
Java警告:原發(fā)性版11需要目標(biāo)發(fā)行版11的解決方法和步驟
這篇文章主要介紹了Java警告:原發(fā)性版11需要目標(biāo)發(fā)行版11的解決方法和步驟,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2025-04-04

