在某些数据表里面在数据创建或者修改的时候需要记录时间(比如订单表),这些时间可以以前端发送请求到后端的时间为准,基于MP 可以实现这些时间的自动填充。在插入数据的时候,我们不用考虑为这些数据字段赋值。
1 Mysql 字段类型
Mysql 的时间数据类型常用的有 datetime 和timestamp 这里推荐用timestamp timestamp 只占用四个字节,更节省内存空间。
2 数据表对应的实体类
需要在实体类添加注解,fill 表示填充规则,接下来需要配置类 实现你想要实现的规则
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 修改时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
3 配置类
package cuit.jiefang.handle;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
/**
* @author :jiefang
* @description:
* @date :2022/4/13 15:10
*/
@Component
public class FillHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
}
4 开始使用
在后面每次将将前端请求插入数据库的时候,都不需要为这两个属性赋值,这两个属性会自动赋值。