Mybatis Plus之updateById()、update()进行更新的注意事项

1. Mybatis Plus 的 FieldStrategy 有三种策略

  • IGNORED:忽略。当策略为 IGNORED 时,表示忽略该字段的空值判断,即无论实体对象的值为空还是非空,都会进行新增、更新操作。
  • NOT_NULL:非 NULL。当策略为 NOT_NULL 时,表示字段不能为空,如果实体对象的值为空,则不会进行新增、更新操作。
  • NOT_EMPTY:非空。当策略为 NOT_EMPTY 时,表示字段不能为空字符串或 null 值,如果实体对象的值为空字符串或 null,则不会进行新增、更新操作。

注意:updateById() 方法的默认策略为 NOT_NULL

2. 配置

  1. 全局配置 field-strategy

    在 application.yml 文件中添加:

    mybatis-plus:
      global-config:
      	#字段策略 0:"忽略判断",1:"非 NULL 判断",2:"非空判断"
        field-strategy: 0
    

    这样做是全局性配置,会对所有的字段都忽略判断,如果一些字段不想要修改,但是传值的时候没有传递过来,就会被更新为 null,可能会影响其他业务数据的正确性。

  2. 对某个字段设置单独的 field-strategy

    根据具体情况,在需要更新的字段中调整验证注解,如验证非空:

    @TableField(strategy=FieldStrategy.NOT_EMPTY)
    

    我们只需要在需要更新为 null 的字段上设置忽略策略:

    @TableField(strategy = FieldStrategy.IGNORED)
    private LocalDateTime time;
    

    此时,使用 Mybatis Plus 中的 updateById() 方法便可以更新成功,当参数实体类中的 time 字段为 null 时,数据库中的数据也会更新为 null。

3. 使用 update() 方法

在 Mybatis Plus 中,提供了两个更新方法,除了 updateById() 方法,还有 update() 方法,直接使用 update() 方法可以将字段设置为 null,这种方法不需要增加配置,推荐使用!


好事定律:每件事最后都会是好事,如果不是好事,说明还没到最后。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值