当程序中使用Mybatis Plus执行更新操作时,如果要使用Mybatis Plus自带的更新操作(非sql、wapper)
例如userService.updateById(user);
如果user中的某个属性为null或空字符串时,Mybatis Plus是不会对其进行更新操作的,如果有需求即使为null或空字符串时也更新则可以使用以下几种方法:
-
添加注解
@TableField(value = "name", updateStrategy=FieldStrategy.IGNORED) private String name;
FieldStrategy 是 MyBatis-Plus 框架中的一个枚举类,用于定义字段更新策略。
(注解只对更新操作生效,对插入操作不生效。)
该枚举类包含以下几个常量:
IGNORED
:意思是"忽略判断",所有值都更新和插入。
NOT_NULL
:当字段为 null 时不进行更新。
NOT_EMPTY
:当字段为 null 或空字符串时不进行更新。
DEFAULT
:使用数据库默认值进行更新。
NEVER
:永远不更新字段的值。 -
全局配置
mybatis-plus.global-config.db-config.update-strategy=ignored
是 MyBatis-Plus 的全局配置属性,用于设置全局的更新策略。在 MyBatis-Plus 中,可以通过全局配置来设置一些共享的属性和行为。其中,db-config
是一个子属性,可以用于配置数据库相关的属性,比如update-strategy
。update-strategy
属性可以设置默认的更新策略。ignored
表示所有值都更新和插入
,要在应用中使用该全局配置,需要在 MyBatis-Plus 的配置文件(通常为application.yml
或application.properties
)中添加以下配置:mybatis-plus: global-config: db-config: update-strategy: ignored #如果配置其他操作还有insert-strategy、select-strategy等
这样,在整个应用程序中,
所有值都更新和插入
需要注意的是,全局配置对应用程序中所有的实体类都生效,如果某些实体类需要自定义不同的更新策略,可以在实体类上直接使用,
@TableField
注解,并设置不同的updateStrategy
属性。这样,实体类级别的配会覆盖全局的配置。 -
使用条件构造器的set进行赋值
UpdateWrapper<User> updateWrapper = Wrappers.update(); updateWrapper.set("name", null); updateWrapper.eq("id", 5); boolean update = userService.update(updateWrapper);
-
在mapper.xml中写对应的sql语句