栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【LocalDateTime与Spring Mvc、Lombok、Jackson的坑】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【LocalDateTime与Spring Mvc、Lombok、Jackson的坑】

LocalDateTime与Spring Mvc、Lombok、Jackson的坑
    • 坑1: Lombok的@Data + @Builder注解同时使用导致LocalDateTime无法格式化
    • 坑2: 使用@JsonForma无法格式化LocalDateTime
    • 坑3: LocalDateTime 格式化必须要有时分秒!

坑1: Lombok的@Data + @Builder注解同时使用导致LocalDateTime无法格式化

如下接收参数实体类

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
public class CampusAntigenInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "检测编号", example = "0124TESax15")
    private String antigenDetectionNo;


    @ApiModelProperty(value = "检测结果 0:阴性,1阳性,2无效", example = "0")
    private Integer antigenDetectionType;


    @ApiModelProperty(value = "检测地点 0:校内,1校外", example = "0")
    private String antigenDetectionAddress;


    @ApiModelProperty(value = "检测时间", example = "2022-05-10 09:25:41")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime antigenDetectionTime;

    private String photoUrl;



}

当@Data和@Builder注解同时使用时:会导致无参构造丢失
Lombok的@Builder注解带来的两大坑

同时会导致时间类型字段格式化失败!

  • 解决方案:添加无参+全参构造器注解
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CampusAntigenInfo implements Serializable {
 ..........
}
坑2: 使用@JsonForma无法格式化LocalDateTime

Jackson 默认不支持@JsonFormat格式化

  • 方案1:需要引入 jsr310依赖
        
        
            com.fasterxml.jackson.datatype
            jackson-datatype-jsr310
        
  • 方案2:使用@@DateTimeFormat
	    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	    private LocalDateTime antigenDetectionTime;
坑3: LocalDateTime 格式化必须要有时分秒!

	 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
	 private LocalDateTime antigenDetectionTime;

Spring Mvc 接口格式化时会报错!

  • 一定要带时分秒!!!!
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private LocalDateTime antigenDetectionTime;
  • 如果没有时分秒使用 LocalDate
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private LocalDate antigenDetectionTime;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/876982.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号