当前位置:主页 > java教程 > mybatis-plus修改某字段为null

使用mybatis-plus想要修改某字段为null问题

发布:2023-03-27 18:35:01 59


给寻找编程代码教程的朋友们精选了相关的编程文章,网友曹嘉懿根据主题投稿了本篇教程内容,涉及到mybatis-plus使用、修改某字段为null、mybatis-plus修改字段、mybatis-plus修改某字段为null相关内容,已被122网友关注,下面的电子资料对本篇知识点有更加详尽的解释。

mybatis-plus修改某字段为null

mybatis-plus想要修改某字段为null

问题场景

使用mybatis + mybatisPlus进行修改某字段,想要将其设为null, 但执行时没有成功。

原因

mybatis-plus会将所有为空的字段在修改时进行过滤,不进行设为空的修改操作。

解决办法

在相关字段上加上注解

@TableField(strategy = FieldStrategy.IGNORED)

例:

@TableField(strategy = FieldStrategy.IGNORED)
private Long classId;

mybatis-plus更新字段为null不生效

异常说明

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

periodRecordOriginal.setSettleTime(null);
periodRecordOriginal.setActualSettleTime(null);
periodRecordOriginal.setSettleStatus(0);
int i = periodRecordMapper.updateById(periodRecordOriginal);

原理

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

解决办法

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;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持码农之家。


参考资料

相关文章

  • Mybatis-Plus使用saveOrUpdate及问题解决方法

    发布:2023-03-05

    本文主要介绍了Mybatis-Plus使用saveOrUpdate及问题解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


网友讨论