Mybatis-plus中如何更新Null字段呢?

欣喜 MyBatis 发布时间:2024-02-20 17:47:31 阅读数:14446 1
下文笔者讲述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()));
}

笔者建议使用此方式,可针对指定字段进行相应的操作
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/MyBatis/202402/8005.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者