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