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

MyBatis-Plus updateById不更新null值

文章目录

  • 前言
  • 方式一 调整全局的验证策略
  • 方式二 调整字段验证注解
  • 方式三 使用 UpdateWrapper


前言

在 MyBatis-Plus 中,使用updateById,null字段并不会更新,其实是和更新的策略有关,当然,也有插入策略,本文基于MyBatis-Plus3.5.2,对插入和更新策略做讲解。

方式一 调整全局的验证策略

注入全局配置,设置属性 insertStrategyupdateStrategy

缺点:这样做会对所有的字段都忽略判断,如果一些字段不想要修改,但是传值的时候没有传递过来,就会被更新为null

mybatis-plus:global-config:db-config:insert-strategy: ignored  # "忽略判断", 所有字段都插入update-strategy: ignored  # "忽略判断", 所有字段都更新

insertStrategyupdateStrategy 属性的值有以下5种枚举类型:

  • ignored “忽略判断”, 所有字段都更新或插入
  • not_null “非 NULL 判断”, 只更新或插入非NULL值
  • not_empty “非空判断”, 只更新或插入非NULL值且非空字符串
  • default 如果字段的值不为null,则进行插入或者更新操作;如果字段的值为null,不执行操作,执行结果还是数据库原来的值或者默认值
  • never 永远不进行插入或更新操作,即使字段的值不为null

方式二 调整字段验证注解

在属性上注解

根据具体情况,在需要更新或者插入的字段中调整验证注解,如忽略判断,任何情况都进行插入和更新操作:

@TableField(updateStrategy = FieldStrategy.IGNORED, insertStrategy = FieldStrategy.IGNORED)

方式三 使用 UpdateWrapper

如果没有设置 insert-strategyupdate-strategy 的值,默认为 default

使用以下方法来进行更新操作,无设置的值还是数据库原来的值,如下

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("name", "一碗情深").set("url", "https://blog.csdn.net/xiaohuihui1400").eq("id", 1);
userMapper.update(null, updateWrapper);

或者使用lambda表达式,只有将属性赋值,数据库的值才会改变,如下,把email设置成null

mapper.update(null,Wrappers.<User>lambdaUpdate().set(User::getName, "一碗情深").set(User::getUrl, "https://blog.csdn.net/xiaohuihui1400").set(User::getEmail, null) // 把email设置成null.eq(User::getId, 1)
);
http://www.lryc.cn/news/139585.html

相关文章:

  • 用pytorch实现AlexNet
  • LeetCode560.和为k的子数组
  • echarts 的dataZoom滑块两端文字被遮挡
  • MongoDB基本使用
  • C++ 中的左值(Lvalues)和右值(Rvalues)
  • html流光按钮
  • HAProxy+nginx搭建负载均衡群集
  • logback-spring.xml 的配置及详解(直接复制粘贴可用)
  • C语言易错点整理
  • 60.每日一练:回文数(力扣)
  • 算法通关村第5关【青铜】| Hash和队列的特征
  • C++:函数
  • Linux网络编程:libevent事件通知库
  • java.lang.reflect.InvocationTargetException:null报未知异常
  • MySQL高级篇——MySQL架构篇1(Linux下MySQL8的安装与使用)
  • 解决 go mod tidy 加载模块超时
  • 金融市场中的机器学习;快手推出自研语言模型“快意”
  • 【面试刷题】——什么是深拷贝和浅拷贝?
  • 物联网(IoT)安全挑战与解决方案: 分析物联网设备面临的安全威胁,以及如何设计和管理安全的IoT生态系统
  • Ubuntu 22.04.3 LTS 维护更新发布
  • 平安健康,找到了医疗服务的价值密码
  • ❤ vue 使用原生组件
  • 4.12 TCP 连接,一端断电和进程崩溃有什么区别?
  • 十二、pikachu之URL重定向
  • 贝叶斯公式中的动词 命名技巧
  • ctfshow-web13 文件上传
  • Python项目开发案例————学生信息管理系统(附源码)
  • 2023-08-25力扣每日一题
  • Vue3中的计算属性和属性监听
  • 微信开发之一键修改群公告的技术实现