首先需要在实体类中添加对应的策略,如:
/**
* 最后登录时间
*/
@TableField(value = "update_date",fill = FieldFill.UPDATE)
private LocalDateTime updateDate;
/**
* 注册时间
*/
@TableField(value = "insert_date",fill = FieldFill.INSERT)
private LocalDateTime insertDate;
ps:关于时间的自动注入推荐java8推出的LocalDateTime。
然后需要实现MetaObjectHandler接口并重新需要的相应接口:
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
setFieldValByName("insertDate", LocalDateTime.now(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
setFieldValByName("updateDate", LocalDateTime.now(), metaObject);
}
}
这里需要注意的是这边第一个添加的属性fieldName是实体类的成员变量不是数据库字段!!!,而且由于我们在实体类中设置的类型为LocalDateTime,所以是不能直接new Date()的,需要使用LocalDateTime.now()来构建填充值。这样还能节省系统消耗。(maybe也是优化的小细节🤐)