创建时间修改时间
- 数据库级别(一般不用)
- 代码级别
2.1 实体类字段属性上需要添加注解
//字段添加填充内容
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)
private Timestamp createTime;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Timestamp changeTime;
2.2 编写处理器来处理这个注解即可
package com.dt.cloud.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
/**
* @ClassName MyMetaObjectHandler
* @Description 对数据库每条记录的创建时间和更新时间自动进行填充
* @Author Zhou Hao
* @Data 2022/8/8 18:09
*/
@Component
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {
/**
* 插入时的填充策略
*
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.setFieldValByName("createTime", currentDateTime(), metaObject, FieldFill.INSERT);
this.setFieldValByName("changeTime", currentDateTime(), metaObject, FieldFill.INSERT_UPDATE);
this.setFieldValByName("establishTime", currentDateTime(), metaObject, FieldFill.INSERT);
this.setFieldValByName("registerTime", currentDateTime(), metaObject, FieldFill.INSERT);
this.setFieldValByName("joinTime", currentDateTime(), metaObject, FieldFill.INSERT);
}
/**
* 更新时的填充策略
*
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.setFieldValByName("changeTime", currentDateTime(), metaObject, FieldFill.INSERT_UPDATE);
this.setFieldValByName("quitTime", currentDateTime(), metaObject, FieldFill.INSERT_UPDATE);
this.setFieldValByName("revokeTime", currentDateTime(), metaObject, FieldFill.INSERT_UPDATE);
}
/**
* 处理时间类型字段,存入数据库
* @return
*/
private Date currentDateTime() {
Calendar calendar = Calendar.getInstance();
return new Timestamp(calendar.getTimeInMillis());
}
}
3.yml中添加 serverTimezone=Asia/Shanghai
完整版
jdbc.url=jdbc:mysql://localhost:3306/demo?serverTimezone=UTC&characterEncoding=utf-8
jdbc.url=jdbc:mysql://localhost:3306/demo?serverTimezone=GMT%2B8&characterEncoding=utf-8
jdbc.url=jdbc:mysql://localhost:3306/demo?serverTimezone=Asia/Shanghai&characterEncoding=utf-8