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())); } 笔者建议使用此方式,可针对指定字段进行相应的操作
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。