解决MybatisPlus updateById更新数据时将没传的数据也更新成了null

news/2025/2/13 16:57:54/

首先,MybatisPlus在调用自带的更新接口updateById时,如果没加任何配置,默认是不会将前端没传的数据也更新成null的。即MyBatisPlus不会更新传入实体中为null的字段,只会更新设置了不为null的值。 如果发现没传的也更新成null了的话,可以看看问题是否出在以下几个方面。

可能原因

1、后端定义的字段类型是否为包装类型?比如应该定义成Integer,结果你定义的是int,那么就算前端没传,也相当于传了默认值0,这样就把数据库原有的数据更新成0了。

2、该字段上是否加了注解?

java">@TableField(updateStrategy = FieldStrategy.IGNORED)

如果加了,那么就会打破MybatisPlus默认规则,将实体中为空的字段也更新成null了。

3、yml配置文件里是否有以下配置?

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

如果加了这个全局配置,就算字段上不加上述注解也没用了,默认就会把实体中为空的字段也更新成null。

解决方案

基础类型改为包装类型、去掉@TableField(updateStrategy = FieldStrategy.IGNORED)注解,这些都好做。但如果原因是出在上述第3条,配置文件里有微服务统一的配置,你也不好删,可以从以下两个角度考虑解决:

1、在mapper的xml里手写updateSelective的sql,即自己用sql控制字段在不为空的情况下才更新,不再用MybatisPlus的默认update接口。

2、在调用updateById前,首先用selectById将数据库的旧数据查出来,然后给这个旧实体赋上更新的数据,这样没传的那些数据也会带上旧的值了。


http://www.ppmy.cn/news/1571754.html

相关文章

C++ 实践扩展(Qt Creator 联动 Visual Studio 2022)

​ 这里我们将在 VS 上实现 QT 编程,实现如下: 一、Vs 2022 配置(若已安装,可直接跳过) 点击链接:​​​​​Visual Studio 2022 我们先去 Vs 官网下载,如下: 等待程序安装完成之…

[论文笔记] Deepseek-R1R1-zero技术报告阅读

启发: 1、SFT&RL的训练数据使用CoT输出的格式,先思考再回答,大大提升模型的数学与推理能力。 2、RL训练使用群体相对策略优化(GRPO),奖励模型是规则驱动,准确性奖励和格式化奖励。 1. 总体概述 背景与目标 报告聚焦于利用强化学习(RL)提升大型语言模型(LLMs)…

关于 IoT DC3 中设备(Device)的理解

在物联网系统中,设备(Device)是一个非常宽泛的概念,它可以指代任何能够接入系统并进行数据交互的实体。包括但不限于手机、电脑、服务器、网关、硬件设备甚至是某些软件程序等所有能接入到该平台的媒介。 内容 定义 目的 示例 …

jupyter notebook中3种读图片的方法_与_图片翻转(上下翻转,左右翻转,上下左右翻转)

已有图片cat.jpg 相对于代码的位置,可以用./cat.jpg进行读取。 下面是3种读图片的方法。 1.python读图片-pillow 图片文件不适合用open去读取 用open读图片,易引发UnicodeDecodeError: gbk codec cant decode byte 0xff in position 0: illegal multib…

IDEA使用codeGPT集合deepseek

步骤: 1.因为我电脑旧版IDEA是2022.2.5,不支持。故直接下载了最新版IDEA2024.3.2.2 2.File --> setting --> Plugins --> 搜索"codeGPT" --> install --> apply(应用) --> 重启 3.截止目前deepseek官网暂时没有开放充值&am…

单片机上SPI和IIC的区别

SPI(Serial Peripheral Interface)和IC(Inter-Integrated Circuit)是两种常用的嵌入式外设通信协议,它们各有优缺点,适用于不同的场景。以下是它们的详细对比: — 1. 基本概念 SPI&#xff0…

Barra多因子模型

Barra模型 1. Barra模型概述1.1 Barra模型的历史与发展1.2 Barra模型在全球市场中的应用 2. Barra模型的基本原理2.1 APT理论基础2.2 Barra模型的基本原理:因子模型的核心假设因子暴露 β i j \beta_{ij} βij​的假设因子收益率 f j f_j fj​的假设 3. Barra模型的…

【Pytorch函数】PyTorch随机数生成全解析 | torch.rand()家族函数使用指南

🌟 PyTorch随机数生成全解析 | torch.rand()家族函数使用指南 🌟 📌 一、核心函数参数详解 PyTorch提供多种随机数生成函数(注意:无直接torch.random()函数),以下是常用函数及参数:…