1.使用mybatis的MetaObjectHandler接口
@Component
@Slf4j
public class CommonMetaObjectHandler implements MetaObjectHandler {
//插入时间
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("gmtCreate",LocalDateTime.now(),metaObject);
this.setFieldValByName("gmtModified",LocalDateTime.now(),metaObject);
}
//更新时间
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("gmtModified",LocalDateTime.now(),metaObject);
}
}
2.yml文件配置spring boot json时区以及日期格式转换
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
3.实体使用注解填充时间
/**
* 创建时间
*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime gmtCreate;
/**
* 更新时间
*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime gmtModified;
4.Could not read JSON: Cannot construct instance of `java.time.Loca 如果你使用redis缓存方案,时间json转换会失败,使用反序列化方案
/**
* 创建时间
*/
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime gmtCreate;
/**
* 更新时间
*/
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime gmtModified;