人生若只如初见

WXY

MybatisPlus中使用 updateById()更新字段为空字符串,null 不更新问题

2023-11-07

MybatisPlus使用 update()/updateById()将字段更新为null或者空值时候不起作用。

原因:MybatisPlus FieldStrategy 有多种策略:

方法一(单独配置)

在实体类的字段是加上 @TableField(strategy = FieldStrategy.IGNORED) 注解 忽略判断

FieldStrategy还有其他几个值:

package com.baomidou.mybatisplus.annotation;
public enum FieldStrategy {
    IGNORED,  // 忽略判断
    NOT_NULL, // 非null判断
    NOT_EMPTY, // 非空判断
    DEFAULT,
    NEVER; 
    private FieldStrategy() {
    }
}

参考文档

方法二(全局配置)

# MyBatisPlus配置
# https://baomidou.com/config/
mybatis-plus:
  global-config:
      # 字段验证策略之 insert,在 insert 的时候的字段验证策略
      # IGNORED 忽略判断
      # NOT_NULL 非NULL判断
      # NOT_EMPTY 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断)
      # DEFAULT 默认的,一般只用于注解里
      # NEVER 不加入 SQL
      insertStrategy: NOT_EMPTY
      # 字段验证策略之 update,在 update 的时候的字段验证策略
      updateStrategy: NOT_EMPTY
      # 字段验证策略之 select,在 select 的时候的字段验证策略既 wrapper 根据内部 entity 生成的 where 条件
      selectStrategy: NOT_EMPTY