当前使用版本(必填,否则不予处理)
3.4.3.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
文档在自动填充功能的注意事项中明确说明:
字段必须声明TableField注解,属性fill选择对应策略,该声明告知Mybatis-Plus需要预留注入SQL字段
我将 创建时间 和 修改时间 放在基础实体类,要使用该注解,就必须添加相关依赖。但是,在基础项目里,不想添加过多依赖,类也想干净一下,有没有办法实现。
重现步骤(如果有就写完整)
报错信息
Comment From: imtzc
https://gitee.com/tangzc/mybatis-plus-ext 可以参考下这个框架,继承BaseEntity,然后实现一个接口即可
Comment From: VampireAchao
@Bean
public MetaObjectHandler metaObjectHandler() {
return new MetaObjectHandler() {
/**
* 插入元对象字段填充(用于插入时对公共字段的填充)
*
* @param metaObject 元对象
*/
@Override
public void insertFill(MetaObject metaObject) {
// 不止一种写法
this.strictInsertFill(findTableInfo(metaObject), metaObject,
Arrays.asList(
// 从User::getGmtCreate拿到属性gmtCreate,然后调用LocalDateTime.now()填充
StrictFill.of(PropertyNamer.methodToProperty(LambdaUtils.resolve(User::getGmtCreate)
.getImplMethodName()), LocalDateTime::now, LocalDateTime.class),
// 填充LocalDateTime.now()进gmtModified对应字段
StrictFill.of("gmtModified", LocalDateTime.class, LocalDateTime.now())
));
}
/**
* 更新元对象字段填充(用于更新时对公共字段的填充)
*
* @param metaObject 元对象
*/
@Override
public void updateFill(MetaObject metaObject) {
// 填充LocalDateTime.now()进gmtModified对应字段,这里是一行写法,中间参数可缩写为LocalDateTime::now
this.strictUpdateFill(metaObject, "gmtModified", () -> LocalDateTime.now(), LocalDateTime.class);
}
};
}
Comment From: imtzc
您好,邮件已经收到,我会尽快给您回复。