MybatisPlus给 createTime 设置默认时间时使用 @TableField(fill = FieldFill.INSERT) 没有作用
@Component
public class MybatisHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
实现了 MetaObjectHandler 后依然没有自动添加时间,还需要在MybatisConfig 的 SqlSessionFactory中添加自己实现的元数据处理器 MybatisHandler
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setMetaObjectHandler(new MybatisHandler());
sessionFactory.setDataSource(dataSource);
sessionFactory.setGlobalConfig(globalConfig);
return sessionFactory.getObject();
}
最后成功 自动添加时间!
注意:
注入的数据类型要与字段原本类型一致,例如时间分别使用了 Date 和 LocalDateTIme 就会注入失败。