解决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;
相关推荐
焦糖玛奇朵婷3 分钟前
解锁扭蛋机小程序的五大优势
java·大数据·服务器·前端·小程序
山栀shanzhi6 分钟前
C/C++之:构造函数为什么不能设置为虚函数?
开发语言·c++·面试
lsx2024068 分钟前
.toggleClass() 方法详解
开发语言
yuan1999714 分钟前
C&CG(列与约束生成)算法,来解决“风光随机性”下的微网鲁棒配置问题
c语言·开发语言·算法
SamDeepThinking15 分钟前
别让一个超时的第三方http接口拖垮所有接口
java·后端·架构
李白的天不白23 分钟前
读到数据为undefind是的几种情况
开发语言·javascript·ecmascript
YaBingSec26 分钟前
玄机靶场:供应链安全-供应链应急-Part2 通关笔记
java·笔记·安全
Gerardisite29 分钟前
企微机器人开发指南
java·python·机器人·自动化·企业微信
OtIo TALL33 分钟前
Java进阶(ElasticSearch的安装与使用)
java·elasticsearch·jenkins
LeocenaY38 分钟前
C语言面试题总结
c语言·开发语言·数据结构