1. 在数据库对应的DO里面加注解
/** * 创建时间 */ @TableField(value = "create_time",fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")//日期格式化 private Date createTime; /** * 更新时间 */ @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")//日期格式化 private Date updateTime;
2.需要定义一个组件,实现MetaObjectHandler接口中定义的方法
@Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("createTime",new Date(),metaObject); this.setFieldValByName("updateTime",new Date(),metaObject); } @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("updateTime",new Date(),metaObject); } }
3.修改配置使自定义的组件MyMetaObjectHandler 生效,因为mybatisplus默认生效的是不填充
黄色部分是新增使MyMetaObjectHandler 生效的代码
@Bean(name = "businessSqlSessionFactory")
public SqlSessionFactory businessSqlSessionFactory(@Qualifier("tradeDataSource") DataSource masterDataSource)
throws Exception {
MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
sessionFactory.setDataSource(masterDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(DruidDataSourceConfiguration.MAPPER_LOCATION));
//全局配置
GlobalConfig globalConfig = new GlobalConfig();
//配置填充器
globalConfig.setMetaObjectHandler(new MyMetaObjectHandler());
sessionFactory.setGlobalConfig(globalConfig);
return sessionFactory.getObject();
}