开发者

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

开发者 https://www.devze.com 2023-02-23 10:35 出处:网络 作者: 普通网友
目录myBATis-plus想要修改某字段为null问题场景原因解决办法mybatis-plus更新字段为null不生效异常说明原理解决办法总结mybatis-plus想要修改某字段为null
目录
  • myBATis-plus想要修改某字段为null
    • 问题场景
    • 原因
    • 解决办法
  • mybatis-plus更新字段为null不生效
    • 异常说明
    • 原理
    • 解决办法
  • 总结

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

    问题场景

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

    原因

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

    解决办法

    在相关字段上加上注解

    @TableField(strategy = FieldStrategy.IGNORED)

    例:

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

    mybatis-plu开发者_Go入门s更新字段为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;

    总结

    以上为个人经验,希望能给大家一个参考,也希望www.devze.com大家多多支js持我们。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消