好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

问题场景

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

原因

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

解决办法

在相关字段上加上注解

?

1

@TableField (strategy = FieldStrategy.IGNORED)

例:

?

1

2

@TableField (strategy = FieldStrategy.IGNORED)

private Long classId;

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

异常说明

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

?

1

2

3

4

periodRecordOriginal.setSettleTime( null );

periodRecordOriginal.setActualSettleTime( null );

periodRecordOriginal.setSettleStatus( 0 );

int i = periodRecordMapper.updateById(periodRecordOriginal);

原理

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

解决办法

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

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

?

1

2

3

4

mybatis-plus:

   global-config:

       #字段策略 0 : "忽略判断" , 1 : "非 NULL 判断" , 2 : "非空判断"

    field-strategy: 0

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

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

?

1

2

@TableField ( updateStrategy = FieldStrategy.IGNORED)

    private Date settleTime;

总结

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

原文链接:https://blog.csdn.net/m0_67403073/article/details/124104442

查看更多关于使用mybatis-plus想要修改某字段为null问题的详细内容...

  阅读:34次