解决MyBatis-Plus 更新字段为null 不生效

1.异常说明:

mapper.updateById()时, set为null 未生效,其他字段更新

复制代码
                periodRecordOriginal.setSettleTime(null);
                periodRecordOriginal.setActualSettleTime(null);
                periodRecordOriginal.setSettleStatus(0);
                int i = periodRecordMapper.updateById(periodRecordOriginal);

2.原理:

MyBatis-Plus对字段的验证策略导致的,MyBatis-Plus默认进了不是全量更新的策略,默认忽略为null 的字段的

3.解决办法:

1)修改MyBatis-Plus 全局默认策略

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

复制代码
mybatis-plus:
  global-config:
      #字段策略 0:"忽略判断",1:"非 NULL 判断",2:"非空判断"
    field-strategy: 0

2)修改实体类注解,改变字段的忽略判断

缺点:需要注意数据库字段是否设置为 非null ,如果为非null 也更新不成功

复制代码
@TableField( updateStrategy = FieldStrategy.IGNORED)
    private Date settleTime;
相关推荐
shenzhenNBA1 分钟前
如何用python生成一定规则的序列号?
开发语言·python·sn·序列号
Qiuner2 分钟前
Spring Boot 机制五: Bean 生命周期与后置处理器(BeanPostProcessor)源码深度剖析
java·spring boot·后端
路边草随风2 分钟前
java实现发布flink yarn session模式作业
java·flink·yarn
沐知全栈开发4 分钟前
SQL CHECK约束的使用与优势
开发语言
qq_12498707534 分钟前
基于Spring Boot的阳光餐盘点餐系统(源码+论文+部署+安装)
java·vue.js·spring boot·后端·毕业设计
csbysj20205 分钟前
Highcharts 散点图
开发语言
程序员三明治6 分钟前
【Java基础】序列化到底是什么?有什么用?实现原理?
java·开发语言·后端·java基础·序列化·反序列化
Full Stack Developme6 分钟前
Java实现Word、Excel、PDF文件 在线预览
java·word·excel
pale_moonlight6 分钟前
十、Scala应用实践(下)
linux·开发语言·scala
武子康7 分钟前
Java-185 Guava Cache 实战:删除策略、过期机制与常见坑全梳理
java·spring boot·redis·spring·缓存·guava·guava cache