@JsonFormat和@DataFormat注解解决前后端日期格式一致性问题

简介: 1. 使用场景分析

为举例方便,我这里给一个简单的实体类Blog,对应数据库中的blog 表:

/**
 * 博客文章实体类
 * 
 * 实体类成员属性 和 数据库表字段满足ORM映射关系
 */
public class Blog {
    private Integer blog_id;// 博客id
    private String blog_title;// 博客标题
    private String blog_content;// 博客内容
    private Date blog_date;// 博客发布日期
    ...(setter/getter/构造函数省略)
}

场景分析

场景1:

当我们从数据库中查询某篇博客文章数据时,blog 表中文章发布日期 blog_date 这个字段,如果未经过处理,后端查询到的数据传到前端进行展示时,会得到一个不太符合我们要求的日期格式,比如:

"blog_date": "2020-12-01T14:25:31.296+0000"

为了解决这个问题,将后端返回给前端的日期格式数据按照需求进行格式化,这时候@JsonFormat注解可以完美解决这个问题!


场景2:

当我们在做用户个人中心信息修改的业务时,如果用户信息包括出生日期这个内容,这种情况下提交修改请求到后端接口,有时候会出现前端传递给后端的日期时间格式不一致的问题!对于这一问题,@DataTimeFormat注解可以完美的解决!


2. 对Blog 实体类的属性加上注解

/**
 * 博客文章实体类
 * 
 * 实体类成员属性 和 数据库表字段满足ORM映射关系
 */
public class Blog {
    private Integer blog_id;// 博客id
    private String blog_title;// 博客标题
    private String blog_content;// 博客内容
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date blog_date;// 博客发布日期
    ...(setter/getter/构造函数省略)
}


3. @JsonFormat 和 @DataFormat 对比

@JsonFormat注解:主要是后台到前台的时间格式的转换

@DataFormat注解:主要是前后到后台的时间格式的转换

其他参考文章:https://blog.csdn.net/eeeeasy/article/details/81201819,如果文章对您有帮助,记得点赞支持一下~


相关文章
|
算法 IDE 开发工具
Airtest脚本的点击位置与点击偏移
Airtest脚本的点击位置与点击偏移
307 0
|
Java 测试技术 数据库
@Transactional(readOnly=true):真的是提高性能的灵丹妙药吗?
【10月更文挑战第1天】在Java开发中,特别是使用Spring框架进行企业级应用开发时,@Transactional注解是处理事务管理的一个关键工具。其中,readOnly=true属性常被用来标记一个事务为只读,以期达到提高性能的效果。然而,这一属性是否真的是提高性能的灵丹妙药呢?本文将深入探讨@Transactional(readOnly=true)的工作机制、潜在影响以及在实际应用中的正确使用方法。
445 1
|
SQL NoSQL 前端开发
MySQL 连接数过多的处理方法合集 - Too many connections - 卡拉云
碰到`Can not connect to MySQL server. Too many connections”-mysql`错误着实令人抓狂。这基本等于失去了对 MySQL 的控制权。本教程将详细讲解多种处理此错误的方法。 sudo mysql -uroot -p ERROR 1040 (00000): Too many connections
23644 1
|
JavaScript
vscode——如何调试typescript
vscode——如何调试typescript
289 4
|
监控 Dubbo Java
超详细的Sentinel入门
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
超详细的Sentinel入门
|
存储 缓存 Ubuntu
在Ubuntu 18.04上安装和配置Postfix的方法
在Ubuntu 18.04上安装和配置Postfix的方法
351 1
|
芯片 数据格式
【51单片机】实现一个动静态数码管显示项目(超全详解&代码&图示)(5)
【51单片机】实现一个动静态数码管显示项目(超全详解&代码&图示)(5)
|
Java
Java中时间戳转换为时间
Java中将时间戳转为日期时间字符串示例:
409 0
|
JavaScript
vue element plus Input Number 数字输入框
vue element plus Input Number 数字输入框
889 0
|
负载均衡 前端开发 JavaScript
全面解析|搞懂Nginx这一篇就够了
Nginx是一个http服务器,是一个使用c语言开发的高性能的http服务器及反向代理服务器。Nginx是一款高性能的http服务器/反向代理服务器及电子邮件(IMAP/POP3)代...
6495 0
全面解析|搞懂Nginx这一篇就够了