mybatisplus 更新字段为null

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatisplus 更新字段为null相关的知识,希望对你有一定的参考价值。

参考技术A 第一种写法:
UpdateWrapper updateWrapper = new UpdateWrapper();
updateWrapper.set("mer_name", null); //把字段改为null
updateWrapper.eq("mer_id", "111");
merInfoService.update(updateWrapper);

第二种写法(lambda):
merInfoService.lambdaUpdate()
.set(MerInfo::getMerName, null) //把字段改为null
.eq(MerInfo::getMerId, "111")
.update();

MyBatisPlus使用updateBatchById()方法无法更新字段,仍返回true

一、问题

今天在用MybatisPlus提供的批量更新功能的时候,发现数据并没有更新,然后还返回true。

二、原因分析


打端点走之后,发现实体中的很多值都是Null,而数据库查询的时候带上is_delete=0 了,所以这才是最终导致了虽然没有更新成功,它也返回false了。

问题解决

实体中的isDeleted中的注解@TableLogic 删掉,然后将yml文件中的

      logic-delete-field: flag  # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

这个也去掉

以上是关于mybatisplus 更新字段为null的主要内容,如果未能解决你的问题,请参考以下文章

springboot调整MybatisPlus全局的验证策略

MybatisPlus 统一管理创建人更新人创建时间更新时间等公共字段

MyBatisPlus使用updateBatchById()方法无法更新字段,仍返回true

mybatisplus自动填充

MybatisPlus的自动填充功能使用!

MybatisPlus字段自动填充配置