环境
- mybatis-plus-3.1.0
一、场景详述
在用mybatis-plus封装的updateById方法来更新数据时,想把一个字段设置为NULL值,但是发现更新后数据没有为NULL,还是原来的值。这是因为mybatis-plus在更新的时候做了NULL判断,默认不更新为NULL的传参。
想要实现的效果是:当前端传参为NULL时,仍然更新该字段。
二、配置分析
1、Mybatis-Plus配置的数据库更新策略如下
mybatis-plus:
global-config:
# 数据库相关配置
db-config:
#字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断"
field-strategy: not_null
配置的更新的策略为非NULL判断,所以,当我们想将数据库中的某个值设置为NULL时(该字段可为NULL),该策略就会忽略此操作。
2、添加注解实现NULL更新
以下为即使为NULL时也更新,需要在该类字段上添加如下注解
/**
* 创建人/处理人
*/
@TableField(strategy = FieldStrategy.IGNORED)
public Long createdBy;
总结:简言之,全局范围配置NULL值不更新(非NULL判断规则),局部可进行NULL值更新(忽略判断规则)。