Mybatisplus 如何将已经有值的字段设置为空值null

news/2025/11/4 17:18:36/文章来源:https://www.cnblogs.com/hbuuid/p/19190859
终极推荐方式:
        UpdateWrapper<SkuDO> wrapper = new UpdateWrapper<>();wrapper.lambda().set(Objects.isNull(dto.getWeights()), SkuDO::getWeights, null).set(Objects.isNull(dto.getShelfLife()), SkuDO::getShelfLife, null).eq(PurchaseSkuDO::getId, dto.getId()).eq(SkuDO::getIsDeleted, DeletedEnum.NORMAL.getCode());int update = this.getBaseMapper().update(skuDO, wrapper);
                LambdaUpdateWrapper<SpuDO> lambdaUpdate = new LambdaUpdateWrapper<>();lambdaUpdate.set(Objects.isNull(spuDO.getProvinceCode()),SpuDO::getProvinceCode, null);lambdaUpdate.set(Objects.isNull(spuDO.getProvinceName()),SpuDO::getProvinceName, null);lambdaUpdate.eq(SpuDO::getId, spuDO.getId());spuDao.update(spuDO, lambdaUpdate);

上面两种写法,其实是一种写法。都非常的推荐。本质就是显示设置需要更新为null的字段。亲测有效,无坑。

错误使用方式分析:

  1. 为何直接使用:spuDao.updateById(spuDO)、spuDao.saveOrUpdate(spuDO)不行:这个问题的核心原因是:MyBatis-Plus 的 saveOrUpdate updateById 方法(底层依赖 BaseMapper)在执行更新操作时,默认会忽略 null 值字段,只更新非 null 的属性。
  2. 为何使用下面对的方式也不行:原因是MyBatis-Plus 中 update(T entity, Wrapper<T> wrapper) 的字段过滤规则是:无论是否 “显式赋值 null”,只要字段策略是 NOT_NULL(默认),都会过滤所有 null 字段—— 它不会区分 “主动设为 null” 和 “未赋值 null”,只要值是 null,就不加入 SET 子句。

    // 1. 构建 spuDo:需要更新的字段(包括要设为 null 的字段)直接设为 null,其他字段设为目标值
    SpuDO spuDo = new SpuDO();
    spuDo.setId(1L); // 主键(必须有,用于匹配要更新的记录)
    spuDo.setName(null); // 要更新为 null 的字段
    spuDo.setPrice(new BigDecimal("5999")); // 要更新的非 null 字段
    spuDo.setStatus(1); // 其他需要更新的字段// 2. 构建 LambdaUpdateWrapper:仅保留 where 条件(不写 set 方法)
    LambdaUpdateWrapper<SpuDO> lambdaUpdate = new LambdaUpdateWrapper<>();
    lambdaUpdate.eq(SpuDO::getId, spuDo.getId()); // 唯一条件:匹配 id = ?(也可加其他条件)// 3. 执行更新:spuDo 传非 null,lambdaUpdate 仅含 where 条件
    spuDao.update(spuDo, lambdaUpdate);
  3. @TableField(updateStrategy = IGNORED) 这种方式可以。但是非常非常不建议使用:使用 @TableField(updateStrategy = IGNORED) 确实能解决 “null 字段无法更新” 的问题,但它会改变字段的默认更新行为,如果不注意业务场景,容易踩坑,核心风险是 “误覆盖数据库已有值

 

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

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

相关文章

2025 年上海商用净水器租赁公司最新推荐榜,技术实力与市场口碑深度解析,助力精准选品工厂,事业单位,办公净水器租赁企业

引言 随着健康饮水需求持续攀升,商用净水器市场规模不断扩大,但市场中品牌繁杂、产品质量参差不齐、服务体系不完善等问题也逐渐凸显,给企业选择带来困扰。为帮助企业精准筛选优质品牌,本次推荐榜基于行业协会最新…

云原生周刊:KubeVela 1.10.4 与 k0s 1.34 发布

云原生热点 KubeVela 1.10.4 现已发布 KubeVela 是一个基于 Kubernetes 的现代应用交付与管理平台,由阿里巴巴云原生团队开源并在 CNCF 孵化。它的目标是让开发者能够以更简单、更高效的方式定义、部署和运维云原生应…

2025年尼龙拉链供货厂家权威推荐榜单:树脂拉链/金属拉链/隐形拉链源头厂家精选

在服装、箱包产业持续升级与全球化采购的推动下,尼龙拉链作为关键辅料,其市场需求保持稳定增长。据2025年行业统计数据显示,中国尼龙拉链市场规模已突破680亿元,年均增长率维持在10%以上。 随着快时尚与户外装备市…

详细介绍:MySQL主从复制:数据同步实战指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

wzy

题目询问 $ s $ 到 $ t $ 的最短距离,我们可以发现我们就没法跑记录二维是否用过传送的方法。 可以发现 $ s->t $ 的最短距离可以看做 $ s->x->y->t $ ,$ x,y $ 为随便选的两个点,设 $ dis1[i] $ 为 $ …

2025年组合型铝合金桥架供货厂家权威推荐榜单:组合式铝合金桥架/阻燃铝合金桥架/专业生产铝合金桥架源头厂家精选

在新型基础设施建设和智能电网改造的推动下,组合型铝合金桥架市场需求持续增长。据2025年行业统计数据显示,中国电缆桥架市场规模已突破580亿元,其中铝合金桥架占比达到35%。 随着数据中心、轨道交通等项目建设加速…

25fall做题记录 - November - Amy

2025.11.1 括号生成 向右或向上走,不能超过对角线。 Catalan数枚举。 class Solution:def generateParenthesis(self, n: int) -> list[str]:ans=[]def dfs(l,res,r):if(l<r):returnif(l+r==2*n-1):ans.append(…

YACS2025年10月乙组

YACS2025年10月乙组T1. 反转 枚举反转了多少行和列(因为行和行之间本身没有区别,列同理),算一下是否有 \(k\) 个格子被反转。代码实现 #include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < …

Google Driver 读写 excel

Google Driver 读写 excel1. 启用 API 并创建凭证进入 Google Cloud 控制台, https://console.cloud.google.com/ 创建新项目; 搜索并启用 Google Drive API 和 Google Sheets API; 创建凭证:若为本地脚本 / 桌…

2025年河南镶牙机构权威推荐榜单:河南老人镶牙机构源头精选

随着人口老龄化加剧与口腔健康意识提升,河南镶牙市场需求显著增长。行业数据显示,2024年河南义齿修复市场规模突破18亿元,其中种植牙占比45%,全口修复需求年均增长率达20%。本文将基于机构资质、医生团队实力与临床…

Windows11升级专业版密钥

Windows 11 专业版是微软为追求高效能体验的用户打造的操作系统,以底层性能优化为核心,深度释放硬件潜力,适配多场景高性能需求。其性能优势集中体现在三大维度:硬件支持与调度上,支持高达 2TB 内存与双路 128 核…

分享一个自动化进行Oracle 重做日志组管理的脚本

分享一个自动化进行Oracle 重做日志组管理的脚本/* Formatted on 2025/11/04 15:00:00 (QP5 v5.300) */ -- File Name : db_add_logfile_optimized.sql -- Purpose : 优化版Oracle重做日志组管理脚本 -- 支持功能: --…

强化学习值函数与策略搜索两种方法对比和疑问解读

下面通过一个简单的“迷宫寻宝”例子,用伪代码和Python代码对比直接策略搜索(以PPO为例)和基于值函数的方法(以Q-Learning为例)的核心区别。 问题场景:迷宫寻宝环境:3x3网格迷宫,起点(0,0),宝藏在(2,2),障碍…

把 1 GHz 做成一粒米”——成都恒利泰科技 HT-LFCG-1000+

把 1 GHz 做成一粒米”——成都恒利泰科技 HT-LFCG-1000+LTCC 低通滤波器,DC-1000 MHz 全段驻波≤1.2,插损≤0.9 dB,4Pad 贴片只有 2 mm1.25 mm,比回形针的弯钩还小;5G 小基站、Wi-Fi 7、车载数传直接“贴脸”安放…

中文分词手艺全解析

中文分词手艺全解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "C…

2025qwb 线上赛wp

2025qwb 线上赛wp好长时间不碰ctf了有快两年了吧。谍影重重 6.0 是一个流量文件看一下data包头80007651995957c3884819ee 这段数据(因为之前基本没接触过流量,我直接问ai,ai也没有分析出是什么协议最后看了一下别人…

2025年钢带波纹管批发厂家权威推荐榜单:hdpe钢带波纹管/钢带管/钢带增强聚乙烯螺旋波纹管源头厂家精选

随着城镇化建设加速和市政工程标准提升,钢带波纹管市场需求持续增长。行业数据显示,2024年我国塑料管道年产量突破1800万吨,其中钢带增强HDPE螺旋波纹管在市政排水领域占比达35%,年均增长率稳定在12%。本文将基于企…

11.4每日总结

今天主要的课程有软件构造,软件企业文化,软件案例分析,完成了软件设计实验五和实验六。借助ai做好了企业文化的ppt,同时软考在即,网课已经全部看完了,难度很大压力也不小,加油!

深入解析:探索大语言模型(LLM):一文读懂通用大模型的定义、特点与分类

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年聚氨酯预聚体公司新排行榜,浇注聚氨酯原材料企业推荐

2025年聚氨酯工业持续向高性能、定制化、绿色化方向升级,聚氨酯预聚体、浇注型聚氨酯及浇注聚氨酯原材料作为下游制造的核心基础,其性能稳定性、工艺适配性与定制化能力,直接决定矿用筛板、胶辊、密封件、新能源配件…