@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
// 新增时自动插入 createTime 和 updatedTime 为当前时间
this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
this.strictUpdateFill(metaObject, "updatedTime", Date.class, new Date());
this.strictUpdateFill(metaObject, "deletedFlag", Integer.class, 0);
}
@Override
public void updateFill(MetaObject metaObject) {
// 更新时自动更新 updatedTime 为当前时间
this.strictUpdateFill(metaObject, "updatedTime", Date.class, new Date());
}
/**
* 更新时默认策略是有值不覆盖,上面更新 updatedTime 的场景明显不适用,这时就需要重写下面的方法
*/
@Override
public MetaObjectHandler strictFillStrategy(MetaObject metaObject, String fieldName, Supplier<?> fieldVal) {
// 获取值
Object obj = fieldVal.get();
if (Objects.nonNull(obj)) {
// 如果值不为 null ,则将指定字段更新为该值
metaObject.setValue(fieldName, obj);
}
return this;
}
}
/**
* 实体类
*/
public class User {
private Integer id;
private String name;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updatedTime;
@TableField(fill = FieldFill.INSERT)
private Integer deletedFlag;
}
09-09
4190