环境
- mybatis-plus-3.1.0
一、场景详述
数据库中有字段#A为字符串设计,默认可以为NULL,该字段有内容,当更新该条目时,前端传过来的字段中并未包含该字段#A,此时去更新数据库的时候,该字段其实默认为NULL。MyBatis-Plus默认配置策略是:当更新数据库值时,传过来的字段为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、更改MyBatis-Plus策略为忽略判断
field-strategy: ignored
但是,如果数据库中设计有创建的时间戳或者创建人时,我们一般在更新的时候,默认不予赋值,即使为NULL时也不更新,就需要在该类字段上添加如下注解
/**
* 创建人
*/
@TableField(strategy = FieldStrategy.NOT_NULL)
public Long createdBy;
/**
* 创建时间
*/
@TableField(strategy = FieldStrategy.NOT_NULL)
public String createdAt;
总结:简言之,全局范围配置NULL值更新(忽略判断规则),局部可进行非NULL值判断更新(非NULL判断规则)。