# 字段填充
# 概念
在实体类中有一些公共字段在所有的insert或update时都要进行赋值,如创建时间、修改时间、逻辑删除等字段, 因此可以通过字段填充功能对公共字段赋值,不再需要在代码中手动对上述字段赋值,具体实现如下:
# HOS默认实现
在HOS平台中使用Base类的insert和update方法时,平台默认对一些字段进行了自动填充,无需开发者二次处理, 只需要在字段上按照下面的使用方式添加注解即可。
# 添加注解
在字段上添加注解@TableField(.. fill = FieldFill.INSERT/UPDATE/INSERT_UPDATE)
示例如下:
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
# 默认填充字段
insert填充的字段包含:
createTime
、updateTime
、createBy
、isDeleted
、createDate
、lastUpdateDate
、lastUpdateTime
、lastUpdateUser
、createUser
update填充的字段包含:
updateTime
、updateBy
、lastUpdateDate
、lastUpdateTime
、lastUpdateUser
注意:自动填充功能只对BaseMapper中的方法生效,不对开发者在Mapper.xml中编写的代码生效
# 自定义实现方案
业务项目中如果存在需要自动填充的字段时,可以根据下面步骤自定义字段填充。
# 1. 添加maven依赖
<dependency>
<groupId>com.mediway.hos</groupId>
<artifactId>hos-app-common</artifactId>
</dependency>
备注:2.4.0到2.5.1,是在hos-app-core,2.5.2移动到hos-app-common
# 2. 继承AbstractMetaObjectHandler类
重写customizeInsertFill和customizeUpdateFill方法来定义新增和更新时的填充字段。
public class HosOpenMetaObjectHandler extends AbstractMetaObjectHandler {
@Override
protected void customizeInsertFill(MetaObject metaObject) {
System.out.println("在此编写新增操作自动填充字段处理");
}
@Override
protected void customizeUpdateFill(MetaObject metaObject) {
System.out.println("在此编写更新操作自动填充字段处理");
}
}
# 3. 编写配置类
注意一定要加@AutoConfigureBefore(HosMetaObjectConfiguration.class),保证自定义的配置类比默认配置类提前加载生效。
@Configuration
@AutoConfigureBefore(HosMetaObjectConfiguration.class)
public class HosOpenMetaObjectConfiguration {
@Bean
public MetaObjectHandler myMetaObjectHandler(){
return new HosOpenMetaObjectHandler();
}
}
# 4. spring.factories文件添加自动装配配置
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.mediway.hos.open.common.config.HosOpenMetaObjectConfiguration
其中spring.factories文件的位置位于resources/META-INF/路径下。
详细介绍请参考官方文档 (opens new window)
← 文件上传下载组件 Druid数据源连接池 →