以插入时间(createTime)和更新时间(updateTime)为例:
前端不传递时间参数,后端也不调用set方法,在插入的时候自动填充createTime,在更新的时候自动填充updateTime
在mybatis中实现这个功能好像需要实现org.apache.ibatis.plugin.Interceptor,大概这样(可能高版本有更好的方式)
在mybatisplus中提供了一个接口MetaObjectHandler用于处理字段的自动填充
可以实现接口,重写里面的默认方法,如:
public class FieldMetaObjectHandler implements MetaObjectHandler {
//插入的时候填充
@Override
public void insertFill(MetaObject metaObject) {
// 创建时间
setFieldValByName("createTime", new Date(), metaObject);
}
//更新的时候填充
@Override
public void updateFill(MetaObject metaObject) {
// 更新时间
setFieldValByName("updateTime", new Date(), metaObject);
}
}
需要在mybatisplus的配置类里面注入这个处理器类
@Bean
public FieldMetaObjectHandler fieldMetaObjectHandler(){
return new FieldMetaObjectHandler();
}
只是注入了还不会生效,还不能实现自动填充,关于填充规则,有这样一个枚举类:
在需要被注入的字段上加上注解