很多表中都有created、updated字段,每次添加数据都需要手动去维护。 MybatisPlus 实现表中创建、修改时间自动填充。
步骤:
1、抽取创建、修改时间实体类Pojo(用到的lombok的注解,要添加其依赖;可不添加,自行创建get、set、toString方法)
@Data
public abstract class Pojo implements Serializable {
@TableField(fill = FieldFill.INSERT) //新增时自动填充
private Date created;
@TableField(fill = FieldFill.INSERT_UPDATE)//新增、修改时自动填充
private Date updated;
}
依赖lombok
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
2、需要用到创建、修改时间的表,对应的实体类--继承Pojo类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User extends Pojo {
private Long id;
private String phone;
private String password;
//private Date created;
//private Date updated;
}
3、自定义处理器,实现创建、修改的自动填充
@Component
public class Handler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
//created对应实体类中的创建时间created
Object created = getFieldValByName("created", metaObject);
if (created == null) {
// 字段为空,可以进行填充
setFieldValByName("created", new Date(), metaObject);
}
Object updated = getFieldValByName("updated", metaObject);
if (updated == null) {
// 字段为空,可以进行填充
setFieldValByName("updated", new Date(), metaObject);
}
}
@Override
public void updateFill(MetaObject metaObject) {
// 更新数据时,直接更新字段
// updated对应实体类中的更新时间updated
setFieldValByName("updated", new Date(), metaObject);
}
}