虽然使用了strictUpdateFill,但如果待更新的字段内容不为null,mp并没有自动填充,比如update_time字段,在insert时候已经被填充了时间,当进行更新时,update_time内容没有更新,解决办法很简单,重写strictFillStrategy方法即可,如:
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.strictInsertFill(metaObject, "operator", String.class, "Jetty");
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.strictUpdateFill(metaObject, "operator", String.class, "Tom");
}
@Override
public MetaObjectHandler strictFillStrategy(MetaObject metaObject, String fieldName, Supplier<?> fieldVal) {
//if (metaObject.getValue(fieldName) == null) 注释该行即可
{
Object obj = fieldVal.get();
if (Objects.nonNull(obj)) {
metaObject.setValue(fieldName, obj);
}
}
return this;
}
}