MyBatis-Plus升级后updateByID方法不能更新null

        mybatis-plus升级到3.2.0版本后,出现updateByID方法无法将字段值更新为null的问题,查看sql语句发现mybatis-plus对为null的字段进行了过滤。

        查阅资料后发现,3.1.2版本后,field-strategy被弃用,db-config配置项field-strategy=ignore失效,在使用updateByID方法时,mybatis-plus采用默认策略,忽略对null的校验,即""会更新,null不会更新,导致无法更新null。

        新版本采用下面三个配置进行非空判断:

        三个配置项可选的属性为:ignore(忽略非空判断,null和""都不过滤);not_null(过滤null);not_empty(过滤null和"")。

        为了更新null,有如下几种方式:

        (1)全局配置,所用更新都不过滤null和""

db-config:
    update-strategy: ignored

        (2)单字段配置,对该字段更新时不过滤null和""

@ApiModelProperty(value = "所属部门组织机构ID")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String ssbmzzjg_id;

        (3)使用UpdateWrapper来更新(3.0以上版本)

//updateAllColumnById(entity) // 全部字段更新: 3.0已经移除
mapper.update(
   new User().setName("mp").setAge(3),
   Wrappers.<User>lambdaUpdate()
           .set(User::getEmail, null) //把email设置成null
           .eq(User::getId, 2)
);
//也可以参考下面这种写法
mapper.update(
    null,
    Wrappers.<User>lambdaUpdate()
       .set(User::getAge, 3)
       .set(User::getName, "mp")
       .set(User::getEmail, null) //把email设置成null
       .eq(User::getId, 2)
);

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值