实现 mybatis-plus 自动填值
mybatis做新增或者更新的时候,总是会记录创建时间、更新时间等通用字段字段
这些放在业务代码里面,其实看起来并不好看。mybatis有一个好的方法可以帮助我们自动的生成这些字段的信息,然后入库。
mybatis的一个默认参数处理器
DefaultParameterHandler
它有一个默认子类
MybatisDefaultParameterHandler
insert和update,其实就是我们需要的东西。新增和更新的时候自动注入创建时间更新时间等字段。
这里我们 以 表时间字段 为例子 :createdAt 创建时间。lastModified 修改时间
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
private static final Logger LOG = LoggerFactory.getLogger(MyMetaObjectHandler.class);
/**
* 创建时间
*/
@Override
public void insertFill(MetaObject metaObject) {
LOG.info(" -------------------- start insert fill ... --------------------");
if (metaObject.hasGetter("createdAt") && metaObject.hasGetter("lastModified")) {
this.strictInsertFill( metaObject, "createdAt", LocalDateTime.class, LocalDateTime.now());
this.strictInsertFill( metaObject, "lastModified", LocalDateTime.class, LocalDateTime.now());
}
}
/**
* 最后一次更新时间
*/
@Override
public void updateFill(MetaObject metaObject) {
LOG.info(" -------------------- start update fill ... --------------------");
if (metaObject.hasGetter("et.lastModified")) {
this.strictInsertFill( metaObject, "lastModified", LocalDateTime.class, LocalDateTime.now());
}
}
}