MyBatisPlus通過ID更新數(shù)據(jù)為NULL的四種方法
在使用 MyBatis-Plus 通過 ID 更新數(shù)據(jù)時(shí),若需將字段值設(shè)為 null,可參考以下解決方案:
方法一:使用@TableField注解
在實(shí)體類字段上添加注解,指定更新策略為忽略非空檢查:
public class User {
@TableField(strategy = FieldStrategy.IGNORED)
private String email;
}
調(diào)用 updateById 時(shí),該字段即使為 null 也會(huì)被更新。
方法二:使用UpdateWrapper手動(dòng)設(shè)置
通過 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)慎使用)
在配置類中設(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ù)庫約束允許字段為 null。
方法四:使用lambdaUpdate
通過 Lambda 表達(dá)式構(gòu)建更新條件:
User user = new User();
user.setId(1L);
userMapper.lambdaUpdate()
.eq(User::getId, user.getId())
.set(User::getEmail, null)
.update();
簡潔且類型安全。
總結(jié)
- 個(gè)別字段處理:使用
@TableField注解。 - 靈活單次更新:選擇
UpdateWrapper或lambdaUpdate。 - 全局處理(謹(jǐn)慎):配置全局策略。
注意事項(xiàng):
- 確保數(shù)據(jù)庫字段允許
NULL,否則會(huì)引發(fā)異常。 - 全局配置需全面測試,避免意外覆蓋非空字段。
- 根據(jù) MyBatis-Plus 版本調(diào)整策略名稱(如
FieldStrategy在 3.x 后更名為FieldFill等)。
到此這篇關(guān)于MyBatisPlus通過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)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
windows下zookeeper配置java環(huán)境變量的方法
今天小編就為大家分享一篇關(guān)于windows下zookeeper配置java環(huán)境變量的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03
關(guān)于ThreadLocal使用時(shí)OOM的討論
這篇文章主要介紹了關(guān)于ThreadLocal使用時(shí)OOM的討論,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-06-06
java實(shí)現(xiàn)兩個(gè)對(duì)象之間傳值及簡單的封裝
這篇文章主要介紹了java實(shí)現(xiàn)兩個(gè)對(duì)象之間傳值及簡單的封裝,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Java警告:原發(fā)性版11需要目標(biāo)發(fā)行版11的解決方法和步驟
這篇文章主要介紹了Java警告:原發(fā)性版11需要目標(biāo)發(fā)行版11的解決方法和步驟,文中通過圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2025-04-04

