解决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;
相关推荐
zwjapple4 分钟前
typescript里面正则的使用
开发语言·javascript·正则表达式
小五Five5 分钟前
TypeScript项目中Axios的封装
开发语言·前端·javascript
小曲程序5 分钟前
vue3 封装request请求
java·前端·typescript·vue
前端每日三省7 分钟前
面试题-TS(八):什么是装饰器(decorators)?如何在 TypeScript 中使用它们?
开发语言·前端·javascript
凡人的AI工具箱20 分钟前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
陈王卜23 分钟前
django+boostrap实现发布博客权限控制
java·前端·django
小码的头发丝、23 分钟前
Spring Boot 注解
java·spring boot
java亮小白199728 分钟前
Spring循环依赖如何解决的?
java·后端·spring
飞滕人生TYF35 分钟前
java Queue 详解
java·队列
chnming198736 分钟前
STL关联式容器之map
开发语言·c++