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

Mybatis使用update更新值为null时不生效问题解决

1.出现的问题

前端修改数据时把属性内容删除然后进行保存,默认传的null,后端更新时属性值为null

然后调用updateById进行更新时发现该属性还是原来的值

update方法不会对属性null的进行更新

2.原因

mybatis-plus FieldStrategy 有三种策略:

  • IGNORED:忽略
  • NOT_NULL:非 NULL,默认策略
  • NOT_EMPTY:非空

默认非空,所有更新时不生效的问题

3.解决方法

1.设置全局的field-strategy 

这样全局配置会把所有的属性都忽略,对于一些不需要改的属性可能会影响业务的准确性。

2. 给单独的属性设置field-strategy

根据实际应用情况对某些属性增加该注解来忽略策略

@TableField(strategy=FieldStrategy.IGNORED)

这样增加该注解的属性就可以使用updateById()方法进行更新null值。

3. 用lambdaUpdateWrapper  推荐使用。

baseMapper.update(lambdaUpdateWrapper);
        LambdaUpdateWrapper<ZcWechatUser> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();lambdaUpdateWrapper.eq(ZcWechatUser::getId, id);lambdaUpdateWrapper.set(ZcWechatUser::getAgentId, null);lambdaUpdateWrapper.set(ZcWechatUser::getAgentName, null);lambdaUpdateWrapper.set(ZcWechatUser::getAgentCreateTime, new Date());return baseMapper.update(lambdaUpdateWrapper) >0;

http://www.dtcms.com/a/217053.html

相关文章:

  • Python+AI Agent:解锁MCP Servers的智能潜力
  • (自用)Java学习-5.16(取消收藏,批量操作,修改密码,用户更新,上传头像)
  • 相机定屏问题分析四:【cameraserver 最大request buffer超标】后置视频模式预览定屏闪退至桌面
  • 自动驾驶规划控制教程——不确定环境下的决策规划
  • 函数到底有多少细节?
  • Docker+MobaXterm+x11实现容器UI界面转发本地
  • rlemasklib 安装笔记
  • algolia使用配置教程-为SSG静态站增加algolia搜索功能
  • 投影机光源三代发展史:从高压汞灯、白光 LED 到三色光源
  • 【Python】日期计算和自动化运行脚本
  • 2025年我国低空经济产业链研究与梳理
  • IEEE Journal on Selected Areas in Communications 2025年论文整理2(中英文摘要)
  • 某验4无感探针-js逆向
  • 第九章 Java基础-集合
  • Redis数据迁移方案及持久化机制详解
  • Java怎么实现父子线程的值传递?InheritableThreadLocal类和transmittable-thread-local类?
  • MySQL :MySQL基本概念
  • 安全生产例题
  • day2 MySQL表数据操作
  • 大数据分析06 数据排序汇总
  • 常见JDK安装配置
  • 代码随想录算法训练营第60期第四十九天打卡
  • 卷积神经网络(CNN):原理、架构与实战
  • 火山引擎声音复刻
  • 【Python】2. 基础语法(2)
  • KV Cache:大模型推理加速的核心机制
  • 八、【状态管理篇】:Pinia 在大型应用中的状态管理实践
  • mediapipe标注视频姿态关键点(基础版加进阶版)
  • SE91 找到报错的程序
  • MySQL的参数 innodb_force_recovery 详解