由於Mybatis plus默認的更新策略是NOT_NULL:非 NULL;即通過接口更新數據時數據為NULL值時將不更新進數據庫。
所以Mybatis plus通過updateById(XX)更新數據,當用戶有更新字段為空字符串 或者 null 的需求時,需要對 FieldStrategy 策略進行調整。
FieldStrategy 有三種策略:
- IGNORED:0 忽略
- NOT_NULL:1 非 NULL,默認策略
- NOT_EMPTY:2 非空
方式一:調整全局的驗證策略(修改application配置文件)
mybatis-plus:
global-config:
#字段策略 0:"忽略判斷",1:"非 NULL 判斷",2:"非空判斷"
field-strategy: 0
缺點:這樣做會對所有的字段都忽略判斷,如果一些字段不想要修改,但是傳值的時候沒有傳遞過來,就會被更新為null
方式二:調整字段驗證注解(根據具體情況,在需要更新的字段中調整驗證注解 @TableField
,如忽略判斷:)
// 生日
@TableField(updateStrategy = FieldStrategy.IGNORED)
@DateTimeFormat(pattern = DateUtils.SHORT_TIME_FORMAT)
@JsonFormat(pattern = DateUtils.SHORT_TIME_FORMAT, timezone = "GMT+8")
private Date birthday;