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

一、背景

最近在项目中使用定时任务同步数据,将一张表中的数据同步到另一张表,使用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值的字段加上以下操作,这是从其他的博文中找到的,自己没试过

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

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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值