mybatis-plus中的updateById 方法,正常情况下,如果设置字段为null,由于默认的字段策略,不会操作此字段,不会变为null值,那应该怎么做的?
第一种: 不推荐
上面我说了,默认的字段策略会忽略掉,所以我们可以将要设置为null 的字段的策略更改下.例如;
@TableField(strategy = FieldStrategy.IGNORED)
private LocalDateTime offlineTime;
这样再次调用updateById,就ok了
由于做了这个更改,可能后续会有其他人误操作此表的时候,真的将这个字段不知情的情况下置为了null,可能造成严重事故!!!
第二种: 推荐方式
这种也相对简单,就是用mybatis-plus自带的updatewrapper
LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(User::getOfflineTime,null);
updateWrapper.set(User::getContent,null);
updateWrapper.eq(User::getId,article.getId());
userMapper.update(user, updateWrapper);
利用自带的update方法即可,这样就能实现字段变为null了!!