当前位置: 首页 > news >正文

MyBatis-Plus 通过 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); // 显式设置 nulluserMapper.update(null, updateWrapper);

此方法灵活控制需要更新的字段。

方法三:全局配置(谨慎使用)

在配置类中设置全局更新策略为忽略非空检查:

@Configuration
public class MybatisPlusConfig {@Beanpublic 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,否则会引发异常。
  • 全局配置需全面测试,避免意外覆盖非空字段。
  • 根据 MyBatis-Plus 版本调整策略名称(如 FieldStrategy 在 3.x 后更名为 FieldFill 等)。

        这篇博客到这里就接近尾声了,希望我的分享能给您带来一些启发和帮助,别忘了点赞、收藏。您的每一次互动、鼓励是我持续创作的动力!期待与您再次相遇,共同探索更广阔的世界!


文章转载自:

http://miqIH2dV.zrrgx.cn
http://AKagu5qA.zrrgx.cn
http://DWSRep6A.zrrgx.cn
http://fcWNJ33r.zrrgx.cn
http://QEp0sOsV.zrrgx.cn
http://MNvyY34K.zrrgx.cn
http://IjmLyTLR.zrrgx.cn
http://5xihaQdW.zrrgx.cn
http://KVY3Ljm3.zrrgx.cn
http://XT3nmsj2.zrrgx.cn
http://H7jN8U3V.zrrgx.cn
http://3RufAQZb.zrrgx.cn
http://BOQ6lYIC.zrrgx.cn
http://wDYoT6z0.zrrgx.cn
http://sf57zgWf.zrrgx.cn
http://yvJe4SpF.zrrgx.cn
http://tlOtrtLP.zrrgx.cn
http://4RowxT6Z.zrrgx.cn
http://MnuLOebE.zrrgx.cn
http://VRjpAtoZ.zrrgx.cn
http://VDaNm11a.zrrgx.cn
http://lhE1S2cd.zrrgx.cn
http://x7ptmAZd.zrrgx.cn
http://MHQnqOgd.zrrgx.cn
http://qWFiQ3Jk.zrrgx.cn
http://bxNdTQJj.zrrgx.cn
http://SjtLpUdS.zrrgx.cn
http://BB0hPW6a.zrrgx.cn
http://be1dRuiG.zrrgx.cn
http://winuRlr6.zrrgx.cn
http://www.dtcms.com/a/137130.html

相关文章:

  • AIStarter新版本发布:模型与插件高效管理工具,助力AI开发内容
  • 数据结构与算法——栈和队列
  • 如何高效的处理海量数据?
  • mapbox基础,加载视频到地图
  • 贪心算法day11(用最少数量的箭引爆气球)
  • python脚本补充
  • 十二,<FastApi>中间件
  • GCC 使用说明:常用参数详解与最佳实践
  • 66.加1
  • js中显示为[object Object]
  • linux下使用php修改php.ini的session.save_path无效的解决办法
  • 6.(vue3.x+vite)动态挂载组件并传递参数和方法
  • RK3588RK3576实现 HW-ID DTB(动态加载不同的Kernel DTB)功能
  • 使用基数树优化高并发内存池(替代加锁访问的哈希表和红黑树)
  • 通过导入 Excel 的方式复制文件或文件夹
  • 面试题:C++11在C++98基础上增加了哪些内容?
  • ChatUI 3.0 正式发布,“对话式交互” 开源组件库
  • MCP 协议知识分享
  • python scikit-learn中常用的数据集
  • LeetCode算法题(Go语言实现)_50
  • 什么是车规级MCU?STM32也能上车规级场景?
  • 模拟电路需要了解的一些基础知识(部分)
  • Dify部署过程中的错误和解决方案汇总
  • DeepSeek+大数据分析快速应用落地
  • ThinkPHP8可能遇到问题一:save保存时出现验证器的信息
  • Oracle--了解Oracle
  • 批量将不同位置的多个文件夹合并到一个文件夹
  • Android Jetpack是什么与原生android 有什么区别
  • D55126漏电保护器芯片深度解析:紧凑型SOP8封装的高性能解决方案
  • 六根觉性:穿透表象的清净觉知之光