什么是自动填充
有些表中会有更新时间、创建时间、更新人或者创建人这些字段。
每次对数据进行新增、删除、修改时都需要对这些字段进行设置。传统的做法是在进行这些操作前,对Entity的字段进行set设置,然后再进行操作。这种做法不仅容易忘记导致出错、而且代码会显得特别冗余。
虽然新增时间和修改时间可以使用数据库的时间,但是新增人和修改人就不能使用这样的功能。
所以MP就提供自动填充的功能,帮助自定设置这些字段的值,提升开发效率,代码也会显得特别优雅。
步骤一、在Entity上添加注解
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
private String createdBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private Date creationDate;
/**
* 更新人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private String lastUpdatedBy;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date lastUpdateDate;
步骤二、添加自动填充配置类
@Component
class FillHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
String userId = UserUtil.getUser().getUid();
this.setFieldValByName("createdBy", userId, metaObject);
this.setFieldValByName("creationDate", new Date(), metaObject);
this.setFieldValByName("lastUpdatedBy", userId, metaObject);
this.setFieldValByName("lastUpdateDate", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
String userId = UserUtil.getUser().getUid();
this.setFieldValByName("lastUpdatedBy", userId, metaObject);
this.setFieldValByName("lastUpdateDate", new Date(), metaObject);
}
}
之后更新数据库时,数据库的操作人和时间字段会自动更新