MyBatis-Plus 默认不更新 null?这 4 种方法帮你搞定

MyBatis-Plus里,更新null字段是一个非常常见、也非常容易踩坑的问题。
很多人会遇到这种情况:

我明明setXxx(null)了,为什么数据库里还是原来的值?

下面我按原因 → 解决方案 → 使用建议来整理一下。


一、为什么 MyBatis-Plus 默认不更新 null?

这是MyBatis-Plus 的设计行为,不是 bug。

默认情况下:

@TableField(updateStrategy = FieldStrategy.NOT_NULL)

也就是说:

字段为null,就不会出现在 UPDATE 语句里

目的是为了:

  • • 防止误操作把字段更新成null

  • • 更符合大多数“只更新有值字段”的业务场景

所以你写:

User user = new User(); user.setId(1L); user.setEmail(null); userMapper.updateById(user);

实际生成的 SQL 类似:

UPDATE user SET id = ? WHERE id = ?

email根本没参与更新。


二、更新 null 的几种正确方式(重点)

方式一:使用@TableField(updateStrategy = FieldStrategy.IGNORED)最推荐

@TableField(updateStrategy = FieldStrategy.IGNORED) private String email;

含义是:

不管是不是 null,都参与 update

这时:

user.setEmail(null); userMapper.updateById(user);

生成 SQL:

UPDATE user SET email = NULL WHERE id = ?

适合场景

  • • 这个字段本来就允许被清空

  • • 例如:备注、头像、手机号、邮箱


方式二:在实体类级别统一策略

@TableName(value = "user", autoResultMap = true) public class User { }

配合全局配置(不太常用,可以了解):

mybatis-plus: global-config: db-config: update-strategy: ignored

慎用

  • • 会导致所有字段都能被更新为 null

  • • 风险较大,不适合复杂业务


方式三:使用UpdateWrapper(最灵活)

如果你不想改实体类:

UpdateWrapper<User> wrapper = new UpdateWrapper<>(); wrapper.eq("id", 1L) .set("email", null); userMapper.update(null, wrapper);

生成 SQL:

UPDATE user SET email = NULL WHERE id = ?

适合场景

  • • 后台管理

  • • 批量操作

  • • 精准控制 SQL


方式四:使用LambdaUpdateWrapper

LambdaUpdateWrapper<User> wrapper = Wrappers.lambdaUpdate(); wrapper.eq(User::getId, 1L) .set(User::getEmail, null); userMapper.update(null, wrapper);

类型安全、IDE 友好,实际项目更推荐

三、一个容易忽略的坑

逻辑删除字段 + 更新 null

如果你用了:

@TableLogic private Integer deleted;

一定要确认:

  • Wrapper里有没有被逻辑删除条件影响

  • • 有些更新失败,其实是被逻辑删除过滤了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1183403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高效AI摘要与润色工具:九款产品的性能测试与用户体验研究

核心工具对比速览 工具名称 主要功能 生成速度 适用场景 独特优势 AIBiye 论文全流程辅助 3-5分钟/万字 开题到定稿 实证研究自动生成 AICheck 文献综述专家 2分钟/篇 文献梳理阶段 知网文献智能解析 AskPaper 学术问答助手 实时响应 研究过程答疑 支持中英…

Python反爬机制应对从基础到实战,破解网站反爬策略

在数据采集领域,反爬机制是爬虫开发绕不开的核心问题。不同网站的反爬策略从简单的UA验证到复杂的验证码、动态渲染、行为检测层层递进,单纯的requests请求早已无法满足需求。本文基于实战经验,系统讲解Python应对各…

Z-Image-Turbo批量生成避雷指南,别再OOM了

Z-Image-Turbo批量生成避雷指南&#xff0c;别再OOM了 在AI图像生成的实际应用中&#xff0c;显存溢出&#xff08;Out of Memory, OOM&#xff09; 是最常见、最令人头疼的问题之一。尤其是在使用高性能但资源消耗大的模型如Z-Image-Turbo进行批量图像生成时&#xff0c;稍有…

深度解析 2026 托福雅思培训班课程辅导推荐:优质机构口碑排名与提分效果实测 - 老周说教育

在全国核心区域,雅思培训市场犹如一片迷雾重重的丛林,“乱象与机遇并存” 的格局让无数考生深陷困境。首当其冲的是基础差异带来的适配难题:英语基础薄弱的考生,面对动辄上万词汇量要求的高阶课程,如同盲人摸象,…

2026年影视后期机构怎么选?一家靠谱机构的权威解析 - 华Sir1

随着短视频和数字内容行业的持续爆发,影视后期人才的需求量在2025年达到了新高。无论是企业宣传、影视制作,还是个人内容创作,掌握专业的影视后期技能已成为职场加分项甚至是转型利器。面对市场上众多的培训机构,如…

国产防脱洗发水前十名榜单最新出炉,控油防脱怎么选?宁山堂获医生认可,控油防脱顶流 - 博客万

随着脱发问题呈现年轻化、普遍化趋势,控油防脱已成为全民关注的头皮护理核心需求,国产防脱洗发水凭借针对性研发优势逐渐占据市场主流。本次最新出炉的国产防脱洗发水前十名榜单,聚焦控油与防脱双重功效,精准匹配国…

YOLOv8数据接口异常?API调用问题排查部署案例

YOLOv8数据接口异常&#xff1f;API调用问题排查部署案例 1. 引言&#xff1a;工业级目标检测的现实挑战 在智能制造、安防监控、零售分析等场景中&#xff0c;实时目标检测已成为不可或缺的技术能力。基于 Ultralytics YOLOv8 的“鹰眼目标检测”系统&#xff0c;凭借其高精…

九款智能摘要生成平台的性能对比及用户使用体验分析

核心工具对比速览 工具名称 主要功能 生成速度 适用场景 独特优势 AIBiye 论文全流程辅助 3-5分钟/万字 开题到定稿 实证研究自动生成 AICheck 文献综述专家 2分钟/篇 文献梳理阶段 知网文献智能解析 AskPaper 学术问答助手 实时响应 研究过程答疑 支持中英…

Python 数据分析入门|02:Pandas 数据清洗:缺失值/重复值/异常值处理

上一篇我们用 Pandas 读取了数据,还摸清了数据的“家底”——但实际工作中,你拿到的往往是“脏数据”:比如电商订单表里“销售额”列空了几行、同一订单重复录了3次、销量突然出现10000件(明显是多输了个0)…… 这…

白城市洮北通榆镇赉洮南大安英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025

在全球化留学趋势持续升温的2026年,雅思成绩已成为白城市洮北、通榆、镇赉、洮南、大安等区县学子开启国际求学之路的核心凭证,更是职场国际化发展的重要加分项。然而,本地雅思考生普遍面临诸多备考困境:优质雅思培…

x64dbg处理异常机制深入解析

x64dbg 异常处理机制深度剖析&#xff1a;从断点拦截到反调试绕过在逆向工程的世界里&#xff0c;程序的“异常”往往不是错误&#xff0c;而是通往真相的入口。当你面对一个层层加壳、布满陷阱的二进制文件时&#xff0c;真正决定你能否突破防线的&#xff0c;往往不是你是否懂…

如何快速判断一个域名有没有投资空间

很多人做域名投资&#xff0c;最头疼的不是怎么买&#xff0c;而是买之前根本判断不出这个域名值不值得下手。等真正拿到手&#xff0c;才发现要么没人问&#xff0c;要么只能低价出。其实&#xff0c;判断一个域名有没有投资空间&#xff0c;并不需要复杂模型&#xff0c;关键…

2026小程序开发制作公司盘点:优选国内5家靠谱小程序开发公司 - 品牌2025

随着数字化转型的深入推进,小程序已成为企业连接线上线下用户、优化经营链路的核心载体,行业规模持续扩容。据QuestMobile数据显示,2025年中国小程序生态市场规模已突破3.2万亿元,其中开发服务市场规模达920亿元,…

YOLO26 epochs设置建议:200轮训练收敛性实测报告

YOLO26 epochs设置建议&#xff1a;200轮训练收敛性实测报告 1. 实验背景与目标 在深度学习目标检测任务中&#xff0c;训练轮数&#xff08;epochs&#xff09;是影响模型性能的关键超参数之一。过少的训练轮次可能导致模型欠拟合&#xff0c;而过多则可能引发过拟合或资源浪…

2026小程序开发制作公司盘点:优选5家小程序开发公司测评 - 品牌2025

一、行业背景:小程序成企业数字化转型核心载体数字化转型已成为企业发展的必然趋势,据《制造业数字化转型能力水平(2025)》数据显示,截至2025年6月底,我国64.2%的企业基本实现全业务流程数字化,77.4%的工业企业…

万能场馆预订系统源码,轻松实现数字化转型,拥抱智能化运营新时代

温馨提示&#xff1a;文末有资源获取方式还在为场馆预订电话响不停、手工登记易出错、场地空置率高等问题烦恼吗&#xff1f;在全民健身热潮下&#xff0c;传统管理方式已成为场馆增长的绊脚石。今天&#xff0c;我们为您介绍一款功能强大的万能场馆预订系统源码&#xff0c;它…

2026五年一贯制专转本机构哪家靠谱?真实口碑推荐 - 品牌排行榜

五年一贯制专转本是指通过省级教育考试从五年制高职(专科)阶段升入本科院校的升学途径,是提升学历层次的重要方式。随着社会对高学历人才需求的增加,选择具备正规资质、教学质量过硬的机构进行备考辅导,成为许多学…

python之lession3

一、python的基本数据类型 1.python中的变量是不需要声明的&#xff0c;每个变量在使用之前都需要赋值&#xff0c;变量赋值后改变量才会被创建 2.python中&#xff0c;变量就是变量&#xff0c;它没有类型&#xff0c;我们说的类型是变量所指的内存中对象的类型 案例&#xff…

米诺地尔哪个牌子好?权威评测结果出炉:蔓迪两剂型凭何包揽前二 - 博客万

在“脱发焦虑”席卷年轻群体的当下,米诺地尔作为全球公认的一线外用生发药物,已成为无数消费者的优选。然而,面对市场上琳琅满目的米诺地尔产品——从液体剂到泡沫剂,从国产到进口,浓度、配方、剂型差异巨大,效果…

麦橘超然可不可以换模型?扩展性分析

麦橘超然可不可以换模型&#xff1f;扩展性分析 1. 引言&#xff1a;从固定模型到灵活扩展的技术演进需求 随着 AI 图像生成技术的普及&#xff0c;用户对个性化和定制化的需求日益增长。当前&#xff0c;“麦橘超然 - Flux 离线图像生成控制台”作为一款基于 DiffSynth-Stud…