MyBatisPlus通過ID更新數據為NULL的四種方法
在使用 MyBatis-Plus 通過 ID 更新數據時,若需將字段值設為 null,可參考以下解決方案:
方法一:使用@TableField注解
在實體類字段上添加注解,指定更新策略為忽略非空檢查:
public class User {
@TableField(strategy = FieldStrategy.IGNORED)
private String email;
}
調用 updateById 時,該字段即使為 null 也會被更新。
方法二:使用UpdateWrapper手動設置
通過 UpdateWrapper 顯式指定需更新的字段:
User user = new User();
user.setId(1L);
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", user.getId())
.set("email", null); // 顯式設置 null
userMapper.update(null, updateWrapper);
此方法靈活控制需要更新的字段。
方法三:全局配置(謹慎使用)
在配置類中設置全局更新策略為忽略非空檢查:
@Configuration
public class MybatisPlusConfig {
@Bean
public GlobalConfig globalConfig() {
GlobalConfig config = new GlobalConfig();
config.setDbConfig(new GlobalConfig.DbConfig()
.setUpdateStrategy(FieldStrategy.IGNORED));
return config;
}
}
注意:此配置會影響所有更新操作,需確保數據庫約束允許字段為 null。
方法四:使用lambdaUpdate
通過 Lambda 表達式構建更新條件:
User user = new User();
user.setId(1L);
userMapper.lambdaUpdate()
.eq(User::getId, user.getId())
.set(User::getEmail, null)
.update();
簡潔且類型安全。
總結
- 個別字段處理:使用
@TableField注解。 - 靈活單次更新:選擇
UpdateWrapper或lambdaUpdate。 - 全局處理(謹慎):配置全局策略。
注意事項:
- 確保數據庫字段允許
NULL,否則會引發(fā)異常。 - 全局配置需全面測試,避免意外覆蓋非空字段。
- 根據 MyBatis-Plus 版本調整策略名稱(如
FieldStrategy在 3.x 后更名為FieldFill等)。
到此這篇關于MyBatisPlus通過ID更新數據為NULL的實現方法的文章就介紹到這了,更多相關MyBatisPlus更新為NULL內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
windows下zookeeper配置java環(huán)境變量的方法
今天小編就為大家分享一篇關于windows下zookeeper配置java環(huán)境變量的方法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
Java警告:原發(fā)性版11需要目標發(fā)行版11的解決方法和步驟
這篇文章主要介紹了Java警告:原發(fā)性版11需要目標發(fā)行版11的解決方法和步驟,文中通過圖文介紹的非常詳細,對大家學習或者使用java具有一定的參考借鑒價值,需要的朋友可以參考下2025-04-04

