mybatis-plus 以下简称mp,目前应该也算是主流的一款数据访问层应用框架。源于其对mybatis 的近乎完美的封装,让我们在使用的时候无比的顺滑, 几乎提供了所有单表操作的方法,大大提升了效率。并且这款框架还是国产的哦,没了解过的可以去了解一下。

回归正题,我们这次来讲一下,怎么样通过mp将数据库中的一个字段更新为null. 可能很多人会觉得奇怪,更新为null, 直接set field = null 不就可以了。这里大家要注意一下,一般情况,我们在使用mp的时候,他的默认策略是空不更新, 这个也是非常主流和常见的一种设置。 为什么这么说呢, 比如我们将一个user表中的  del_flag 设置为1,  一般情况我们只需这么做就行:

User user = new User();

user.setId(1);

user.setDelFlag(1);

userService.update(user);

这个时候,其实其他的字段都是空,如果他的策略是空更新,那么执行之后,表里就只有id 和del_flag有值,其余的字段都是Null,很明显这不是我们想要的结果,这就是默认的空不更新策略。

这个时候就出现了一个痛点,必须我是需要把表中的某个字段更新为空,那应该怎么做的? 一是我们将全局更新策略设置为空可以更新,二是将这个字段设置为空可以更新。 这两种方式都是我极力不推荐的,大家也尽量不要使用这两种方法,真的非常危险,有可能导致别人在调用更新方法的时候不小心就把你的某些字段置为null 了。

这里推荐一种方法,也是官网给出的,但是必须要求mp的版本 大于3, 如果是3以下的版本没有这个功能,就是使用UpdateWrapper.

比如,我们想把  user表中的gender设置为空:

LambdaUpadateWrapper<User> wrapper = new LambdaUpdateWrapper<>();

wrapper.set(User::getGender(), null);

wrapper.eq(User::getId(), 1);

userService.update(wrapper);

通过UpdateWrapper 可以设置null.

官网说明:

地址: https://mp.baomidou.com/guide/faq.html#%E6%8F%92%E5%85%A5%E6%88%96%E6%9B%B4%E6%96%B0%E7%9A%84%E5%AD%97%E6%AE%B5%E6%9C%89-%E7%A9%BA%E5%AD%97%E7%AC%A6%E4%B8%B2-%E6%88%96%E8%80%85-null

Mybatis-plus 将字段更新为null相关推荐

  1. JPA-save()方法会将字段更新为null的解决方法

    JPA-save()方法会将字段更新为null的解决方法 参考文章: (1)JPA-save()方法会将字段更新为null的解决方法 (2)https://www.cnblogs.com/qingmu ...

  2. mybatisPlus更新字段值为null

    mybatisPlus更新字段值为null 问题描述 TableField源码 FieldStrategy 源码 设置为null的方案 使用UpdateWrapper更新 设置全局的field-str ...

  3. mybatisPlus中的field-strategy(字段更新插入策略):null值插入和更新问题

    目录 mybatisPlus中null值插入和更新问题 实际项目解决方法示例一 实际项目解决方法示例二 field-strategy字段更新插入策略介绍 枚举类FieldStrategy源码 枚举类字 ...

  4. 【mybatis】mybatis自定义动态字段查询,mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段...

    mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段 先看一下 怎么实现动态的自定义字段查询: 例如: 而field 就是数据表中的某一个字段 String f ...

  5. mybatis入门学习(九) -DB环境切换、使用注解、事务提交、获取自增ID、多参数传参、鉴别器、内置参数、批量写入、Oracle字段无法插入 null 值

    一.多数据库环境切换 1.config配置: <!-- default="mydemo" 指定连接的数据库 --><environments default=&q ...

  6. 【spring data jpa】spring data jpa 中的update 更新字段,如果原字段值为null不处理,不为null则在原来的值上加一段字符串...

    示例代码: /*** 如果barCode字段值为null则不处理* 如果barCode字段值不为null则在原本值的前面拼接 del:* @param dealer* @return*/@Modify ...

  7. mysql ef 随机排序_EFCore+Mysql倉儲層建設(分頁、多字段排序、部分字段更新)

    前沿 園子里已有挺多博文介紹了EFCore+Mysql/MSSql如何進行使用,但實際開發不會把EF層放在Web層混合起來,需要多個項目配合結構清晰的進行分層工作,本文根據個人實踐經驗總結將各個項目進 ...

  8. 【MongoDB】递归获取字段更新表达式,更新复杂数据类型对象

    在实际更新Mongo对象时发现,原有的更新代码无法更新复杂的数据类型对象.恰好看到张占岭老师有对该方法做相关的改进,因此全抄了下来. 总的核心思想就是运用反射与递归,对对象属性一层一层挖掘下去,循环创 ...

  9. JPA踩坑记:Spring Data Jpa 更新为null的问题(save方法保存时null值会被更新到数据库)

    关键字: JPA更新为null,JPA save null,JPA保存为null 今天使用jpa的save方法时发现null字段也会被更新到数据库,这个直接把数据库数据覆盖的行为很可怕,果断研究了一下 ...

最新文章

  1. 《机器学习与数据科学(基于R的统计学习方法)》——2.11 R中的SQL等价表述...
  2. 【求助】哪个软件负责在屏幕右下角显示类似“caps lock on/off”的? - 技术封存区 - 专门网论坛 -...
  3. C# Marshal类基本概念和入门示例程序
  4. requests模拟登陆 验证码
  5. java api集合,javaAPI_集合基础_集合中常见操作示例
  6. python的imread、newaxis
  7. 安装LAMP环境(PHP5.4)
  8. Collections about Deep Learning
  9. 通信系统仿真速成第2天:QPSK调制与解调(实验)
  10. Mutisim电路仿真的应用(有源低通滤波器的设计)
  11. 遵循学术规范,避免学术不端
  12. win11系统苹果电脑如何安装 Windows11绕过tpm限制在苹果电脑进行安装的步骤方法
  13. Python 爬虫 | 获取历史涨停数据
  14. Elasticsearch学习第二篇--常用的几种搜索方式
  15. 解决百度网盘限速的软件
  16. Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached
  17. docker desktop 运行mysql
  18. 会声会影2021软件如何快速找到最新版下载?
  19. 传入收据提报年月,某个时间段内哪些时间没有提报收据,传入list存入的格式(2017.01-2019.05)
  20. Boost和bagging算法

热门文章

  1. fit_generator生成的history显示 key_error,并且没有loss 和 val_accuracy
  2. Leetcode每日一题:190.reverse-bits(颠倒二进制位)
  3. 机器学习实战(八)分类回归树CART(Classification And Regression Tree)
  4. mac连接ubuntu,tomcat乱码
  5. c语言单片机串口通讯,单片机C语言之串口通信协议
  6. jedis java.lang.verifyerror_需要使用jfinal中的JedisPlugin的一些问题
  7. js 生成二维码_Node for Max 二维码生成器
  8. 若依集成knife4j实现swagger文档增强
  9. JPA的双向一对一关联实现示例
  10. [Ext JS 7]7.4 样式主题(Theme)