mybatis-plus MetaObjectHandler自动填充的坑
背景
在线上排查问题发现 update_time 没有自动更新
查看代码
this.strictInsertFill(metaObject, "updatedTime", Timestamp.class, Timestamp.valueOf(LocalDateTime.now()));
strictInsertFill 这个方法 翻译过来 严格插入填充,本来以为是严格按照输入的字段值填充
在官网查看发现:
根据发放查看源码
/**
* 严格模式填充策略,默认有值不覆盖,如果提供的值为null也不填充
*
* @param metaObject metaObject meta object parameter
* @param fieldName java bean property name
* @param fieldVal java bean property value of Supplier
* @return this
* @since 3.3.0
*/
default 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;
}
只能重写方法或者手动设置值啦,但是历史数据找不回来咯