Mybatis-plus中如何更新Null字段呢?
下文笔者讲述mybatisplus中更新null字段的方法及示例分享,如下所示
MyBatis-plus默认更新说明
通常MyBatis-plus更新时
不会更新实体中的null
只更新不为null的值
============================
那么mybatisplus如何将字段更新为null值呢?
下文笔者将一一道来,如下所示
MybatisPlus更新字段值为null的实现思路
方式1:
直接在mapper.xml中写sql:
方式2:
设置全局的FieldStrategy
方式3:
对指定的字段单独设置field-strategy
方式4:
使用update方法结合UpdateWrapper方式更新
例:
在mapper.xml中写sql
update table A set 字段a = null where 字段b = 条件
设置全局的FieldStrategy
在配置文件中修改全局策略
properties文件格式:
mybatis-plus.global-config.db-config.field-strategy=ignored
#yml文件格式:
mybatis-plus:
global-config:
#字段策略 0:"忽略判断",1:"非 NULL 判断",2:"非空判断"
field-strategy: 0
使用以上全局配置时
在更新时会忽略对所有字段的判断
但是如果一些字段没有传值过来,会被直接更新为null,可能会影响其它业务数据的准确性
笔者不推荐使用此方法
对指定字段单独设置field-strategy
@TableField(strategy=FieldStrategy.NOT_EMPTY)
此种方式,只需要在需要更新为null的字段上
设置忽略策略,如下:
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String updateBy;
采用以上方式,
mybatis-plus中updateById方法
就可以成功将字段更新为null
使用update方法结合UpdateWrapper方式更新
User user=userService.LambdaQuery().eq(User::getUserId,userId).one(); if(user!=null){ userService.update(user,new UpdateWrapper<User>().lambda() .set(User::getUserName,null) .eq(User::getUserId,user.getUserId())); } 笔者建议使用此方式,可针对指定字段进行相应的操作
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


