mybatisplus的自动注入插件会拦截到注入的方法,并在实现了MetaObjectHandler的接口的方法中注入值进去. 但在实际中可能我们需要按需插入,有的值不是由插件生成的值,而是在插入时我们进行指定.
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
// 获取元数据中 名为 gmtCreate 字段的值
Object gmtCreate = this.getFieldValByName("gmtCreate", metaObject);
// 如果是空, 自动注入生效
// 如果不是空, 说明注入时指定了该字段的值, 自动注入不生效, 按照程序中指定的值保存
if (gmtCreate == null){
this.setFieldValByName("gmtCreate",new Date(),metaObject);
}
this.setFieldValByName("gmtModified",new Date(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("gmtModified",new Date(),metaObject);
}
}