# 字段填充
# 概念
在实体类中有一些公共字段在所有的insert或update时都要进行赋值,如创建时间、修改时间、逻辑删除等字段, 因此可以通过字段填充功能对公共字段赋值,不再需要在代码中手动对上述字段赋值,具体实现如下:
# HOS实现
在HOS平台中使用Base类中的insert和update方法时,已对createTime、updateTime进行了自动填充,无需开发者二次处理, 只需要在字段上按照下面的使用方式添加注解即可。。
注意:自动填充功能只对BaseMapper中的方法生效,不对开发者在Mapper.xml中编写的代码生效
# 添加注解
在字段上添加注解@TableField(.. fill = FieldFill.INSERT)
示例如下:
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
# 自定义实现方案
业务项目中如果存在需要自动填充的字段时,可以自定义MetaObjectHandler实现类。
# 自定义MetaObjectHandler实现类
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
public MyMetaObjectHandler() {
}
@Override
public void insertFill(MetaObject metaObject) {
if (metaObject.getObjectWrapper().hasSetter("createTime")) {
this.setFieldValByName("createTime", new Date(), metaObject);
}
if (metaObject.getObjectWrapper().hasSetter("updateTime")) {
this.setFieldValByName("updateTime", new Date(), metaObject);
}
//示例:在表中存在逻辑删除字段deleted的前提下insert时自动填充值为false
if (metaObject.getObjectWrapper().hasSetter("deleted")) {
this.setFieldValByName("deleted", false, metaObject);
}
}
@Override
public void updateFill(MetaObject metaObject) {
if (metaObject.getObjectWrapper().hasSetter("updateTime")) {
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
}
详细介绍请参考官方文档 (opens new window)
← 文件上传下载组件 Druid数据源连接池 →