【基于mybatis-plus下更新指定字段为null?】


问题:基于mybatis-plus下更新指定字段为null


一、mybatis-plus是什么?

mybatis-plus简称:MP,是基于mybatis实现的增强插件。快速实现单表操作
特点:

  1. 免xml,全程不用xml文件,基于java代码实现
  2. 简单配置
  3. 集成代码生成,自动分页,逻辑删除等快捷开发方式

二、mybatis-plus下更新字段值为null

在使用Mybatis-plus的更新方法的时候,如果传递的参数中某个字段为null,会忽略当前字段值的更新,默认不会对为null的字段更新成null。但是我们有写场景下必须对单独的几个字段赋值为null,那么这种情况下怎么去实现呢?

1. @TableField 注解实现:

@TableField(updateStrategy= FieldStrategy.IGNORED)
private String name;
描述
IGNORED忽略判断
NOT_NULL非 NULL 判断
NOT_EMPTY非空判断(只对字符串类型字段,其他类型字段依然为非 NULL 判断)
DEFAULT追随全局配置
NEVER不加入SQL
-- FieldStrategy.IGNORED 忽略判断,相当于跳过对null值得判断,该更新什么就更新什么:
update student set name = null

调用Mapper.updateById(T entity)时,就可以插入null值了。
这中方式有个弊端,修改方式是全局的,影响updateById()方法的调用效果。

2. Mapper.update()方法实现:

与select方式一样,mybatis-plus也提供了update的UpdateWrapper方式:

	LambdaUpdateWrapper<StudentEntity> auw = new LambdaUpdateWrapper<>();
    auw.set(StudentEntity :: getName, null);
    auw.eq(StudentEntity :: getId, 1);
    this.mapper.update(null, auw); 
-- 这种方式指定更新字段和更新的值,相当于:
update student set name = null where id = 1

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值