SpringBoot 整合 Redis 时间日期类转换出错

报错信息

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 
Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module 
"com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through 
reference chain: java.util.ArrayList[0]->com.zym.entity.Banner["gmtCreate"])

原因:将集合等数据存入 redis 需要将其序列化,jackson 不支持数据中的 LocalDateTime 类型的属性

解决办法:

引入额外的依赖 com.fasterxml.jackson.datatype:jackson-datatype-jsr310

<dependency>
 <groupId>com.fasterxml.jackson.datatype</groupId>
 <artifactId>jackson-datatype-jsr310</artifactId>
 <version>2.13.0</version>
</dependency>

然后在对应的使用了 LocalDateTime 的实体类属性上添加序列化和反序列化注解,并指定对应的序列化类

@JsonDeserialize(using = LocalDateTimeDeserializer.class)		// 反序列化
@JsonSerialize(using = LocalDateTimeSerializer.class)		// 序列化
@TableName("edu_teacher")
@ApiModel(value = "Teacher对象", description = "讲师")
public class Teacher implements Serializable {

    private static final long serialVersionUID = 1L;

      @ApiModelProperty("创建时间")
      @TableField(fill = FieldFill.INSERT)
      @JsonDeserialize(using = LocalDateTimeDeserializer.class)		// 反序列化
      @JsonSerialize(using = LocalDateTimeSerializer.class)		// 序列化
      private LocalDateTime gmtCreate;

      @ApiModelProperty("更新时间")
      @TableField(fill = FieldFill.INSERT_UPDATE)
      @JsonDeserialize(using = LocalDateTimeDeserializer.class)		// 反序列化
      @JsonSerialize(using = LocalDateTimeSerializer.class)		// 序列化
      private LocalDateTime gmtModified;

    
    
    public LocalDateTime getGmtCreate() {
        return gmtCreate;
    }

      public void setGmtCreate(LocalDateTime gmtCreate) {
          this.gmtCreate = gmtCreate;
      }
    
    public LocalDateTime getGmtModified() {
        return gmtModified;
    }

      public void setGmtModified(LocalDateTime gmtModified) {
          this.gmtModified = gmtModified;
      }

    @Override
    public String toString() {
        return "Teacher{" +
                  ", gmtCreate=" + gmtCreate +
                  ", gmtModified=" + gmtModified +
              "}";
    }
}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐