问题: xxxService.updateById(xxx) 默认不会更新值为null的字段
原因:mybatis-plus的fieldStrategy的策略有三种,分别是IGNORED-0-忽略,NOT_NULL-1-非NULL(默认策略),NOT_EMPTY-2-非空,所以造成不更新的原因是默认策略。
解决办法:
1、设置全局的fieldStrategy
2、对字段单独设置策略
@TableField(updateStrategy= FieldStrategy.IGNORED)
3、使用mapper的update
LambdaUpdateWrapper<xxx> wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(xxx::getId, xxx.getId()); wrapper.set(xxx::getOrgUri, xxx.getOrgUri()); wrapper.set(xxx::getBeginTime, null); xxxMapper.update(xxx, wrapper);
第1种就免了,第2、3种验证过都可以。