使用mybatis-plus自动注入创建时间创建人等字段
创建mybatisconfig配置类继承metaObjectHandler 重写insetFill和updateFill的方法
@Configuration
@MapperScan(basePackages = {"com.XX.XX.**.mapper.*"})
public class MybatisPlusConfig implements MetaObjectHandler {
/**
* mybatis-plus SQL执行效率插件【生产环境可以关闭】
*/
@Bean
@ConditionalOnProperty(prefix = "mybatis-plus", name = "performance", havingValue = "true")
public PerformanceInterceptor performanceInterceptor() {
return new PerformanceInterceptor();
}
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
@Bean
public RequestContextListener requestContextListener() {
return new RequestContextListener();
}
@Override
public void insertFill(MetaObject metaObject) {
//默认未删除
setFieldValByName("isDeleted", "0", metaObject);
//创建时间默认当前时间
setFieldValByName("createdTime", System.currentTimeMillis(), metaObject);
setFieldValByName("createdBy", UserInfoContext.getUserInfo().getId(), metaObject);
setFieldValByName("updatedTime", System.currentTimeMillis(), metaObject);
setFieldValByName("updatedBy", UserInfoContext.getUserInfo().getId(), metaObject);
setFieldValByName("companyId", UserInfoContext.getUserInfo().getCurrentCompanyId(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
//创建时间默认当前时间
setFieldValByName("updatedTime", System.currentTimeMillis(), metaObject);
//创建人
setFieldValByName("updatedBy", UserInfoContext.getUserInfo() != null ? UserInfoContext.getUserInfo().getId() : "", metaObject);
setFieldValByName("companyId", UserInfoContext.getUserInfo()!= null ? UserInfoContext.getUserInfo().getCurrentCompanyId(): "", metaObject);
}
}
使用此文件过程中遇到了其他业务需求,在导入的文件中有创建时间创建人字段时,对插入逻辑进行以下更改
@Override
public void insertFill(MetaObject metaObject) {
//默认未删除
setFieldValByName("isDeleted","0",metaObject);
//判断添加/更新的时候是否给他赋值
Object createTime1 = getFieldValByName("createdTime", metaObject);
if (createTime1 == null) {
//this.strictInsertFill(metaObject, "createdTime", Long.class,System.currentTimeMillis());
//创建时间默认当前时间
setFieldValByName("createdTime", System.currentTimeMillis(),metaObject);
}
setFieldValByName("createdBy", UserInfoContext.getUserInfo().getId(), metaObject);
setFieldValByName("updatedTime", System.currentTimeMillis(),metaObject);
setFieldValByName("updatedBy", UserInfoContext.getUserInfo().getId(), metaObject);
setFieldValByName("companyId", UserInfoContext.getUserInfo().getCurrentCompanyId(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
//创建时间默认当前时间
setFieldValByName("updatedTime", System.currentTimeMillis(),metaObject);
//创建人
setFieldValByName("updatedBy", UserInfoContext.getUserInfo() != null ? UserInfoContext.getUserInfo().getId() : "", metaObject);
setFieldValByName("companyId", UserInfoContext.getUserInfo()!= null ? UserInfoContext.getUserInfo().getCurrentCompanyId(): "", metaObject);
}