MybagtisPlus默认方法update相关,默认是不更新NULL字段,但是有时候业务需要更新NULL字段,这个时候可以通过下面方法处理:
1、直接 mapper.xml 写 sql 脚本:
UPDATE tableName SET name=null WHERE id=1;
2、设置全局字段策略:
原因是MybatisPlus字段更新策略有三种,大家可以按需设置。
IGNORED:0 忽略
NOT_NULL:1 非 NULL,默认策略
NOT_EMPTY:2 非空
因为默认的更新策略是NOT_NULL;即通过接口更新,数据为NULL时将不更新到数据库中。
通过properties全局配置,如下:
mybatis-plus.global-config.db-config.field-strategy=ignored
#yml文件格式:
mybatis-plus:
global-config:
field-strategy: 0
field-strategy 设置为 0 即可。
但是这样做,很容易将数据更新为null。(不推荐此方法)
3、对需要更新null的字段单独设置FieldStrategy:
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String number;
此方法也不是最理想方法。(不推荐)
4、通过UpdateWrapper更新null值:(推荐)
noticeService.lambdaUpdate().eq(BaseNotice::getId, id)
.set(BaseNotice::getNoticeOrder, null).update();