Mybatis-Plus中 updateById 无法将已有值的字段更新为 null

在 MyBatis-Plus 中,使用updateById,null字段并不会更新,其实是和更新的策略有关,当然,也有插入策略。

1、调整全局策略(会对所有的字段都忽略判断,如果一些字段不想要修改,但是传值的时候没有传递过来,就会被更新为null)

mybatis-plus:
  global-config:
    db-config:
      insert-strategy: ignored  # "忽略判断", 所有字段都插入
      update-strategy: ignored  # "忽略判断", 所有字段都更新

insertStrategy、updateStrategy 属性的值有以下5种枚举类型:

  • ignored “忽略判断”, 所有字段都更新或插入
  • not_null “非 NULL 判断”, 只更新或插入非NULL值
  • not_empty “非空判断”, 只更新或插入非NULL值且非空字符串
  • default 如果字段的值不为null,则进行插入或者更新操作;如果字段的值为null,不执行操作,执行结果还是数据库原来的值或者默认值
  • never 永远不进行插入或更新操作,即使字段的值不为null

2、调整字段验证注解

在属性上注解

根据具体情况,在需要更新或者插入的字段中调整验证注解,如忽略判断,任何情况都进行插入和更新操作:

@TableField(updateStrategy = FieldStrategy.IGNORED, insertStrategy = FieldStrategy.IGNORED)

3、使用 UpdateWrapper

UpdateWrapper<Entity> wrapper = new UpdateWrapper<>();
wrapper.eq("id", id)
       .set("field1", null)
       .set("field2", value2);
myService.update(wrapper);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值