mybatis-plus更新字段忽略null

前言

项目上在用mybatis-plus后,我想更新一个字段为null值时发现设置到实体中更新无效,并没有更新,发现需要在字段上加个注解

解决

如果是新增时,在实体类对应的字段上加注解@TableField(insertStrategy=FieldStrategy.IGNORED),忽略null值的判断,例如

1
2
@TableField(insertStrategy = FieldStrategy.IGNORED)
private String addr;

如果是更新时,在实体类对应的字段上加注解@TableField(updateStrategy=FieldStrategy.IGNORED),忽略null值的判断,例如

1
2
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String addr;

共有一下几个可选值,不加的话默认就是not_null,所以默认不能更新null值进去

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
* 字段策略枚举类
* <p>
* 如果字段是基本数据类型则最终效果等同于 {@link #IGNORED}
*
* @author hubin
* @since 2016-09-09
*/
public enum FieldStrategy {
/**
* 忽略判断
*/
IGNORED,
/**
* 非NULL判断
*/
NOT_NULL,
/**
* 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断)
*/
NOT_EMPTY,
/**
* 默认的,一般只用于注解里
* <p>1. 在全局里代表 NOT_NULL</p>
* <p>2. 在注解里代表 跟随全局</p>
*/
DEFAULT,
/**
* 不加入 SQL
*/
NEVER
}