MybatisPlus更新时会自动忽略传值为NULL的字段

悠悠 2023-09-29 05:35 98阅读 0赞

三种方案解决MybatisPlus更新时会自动忽略传值为NULL的字段

  • 一、背景
  • 二、解决方案
    • 2.1 使用`@TableField(updateStrategy = FieldStrategy.IGNORED)`注解添加在字段上
      • 在枚举`FieldStrategy`中有五个属性如下
      • `updateStrategy`说明
    • 2.2 在需要修改的实体类字段上加上`@TableField(fill = FieldFill.INSERT_UPDATE)`注解
      • `FieldFil`l枚举说明
      • `fill`策略说明

一、背景

最近在项目中使用定时任务同步数据,将一张表中的数据同步到另一张表,使用mybatisplus的自带封装的update的方法时,修改的某个字段为null时,会自动忽略我这个字段,导致这个字段还是原来未修改的值。
现在需要将属性中为null的也更新到表中

二、解决方案

2.1 使用@TableField(updateStrategy = FieldStrategy.IGNORED)注解添加在字段上

在这里插入图片描述

在枚举FieldStrategy中有五个属性如下

在这里插入图片描述

updateStrategy说明

加粗样式

2.2 在需要修改的实体类字段上加上@TableField(fill = FieldFill.INSERT_UPDATE)注解

在这里插入图片描述

FieldFill枚举说明

在这里插入图片描述

fill策略说明

在这里插入图片描述
2.重写mybatisPlus封装的update的方法,在需要传null值的字段加上以下操作,这是从其他的博文中找到的,自己没试过

  1. UpdateWrapper<Student> stuUpdate = new UpdateWrapper<>();
  2. stu.setStuGender(null);
  3. stuUpdate.lambda().set(Student::getStuGender, stu.getStuGender()).eq(Student::getId, stu.getId());
  4. studentService.update(stuUpdate);

缺点:相对来说较为繁琐,但解决了第一个方法出现的问题

发表评论

表情:
评论列表 (有 0 条评论,98人围观)

还没有评论,来说两句吧...

相关阅读