java 与 mysql 时间戳数据交互

本文最后更新于:2021年12月20日 晚上

一、java 接收 myqsl 数据库时间戳类型数据

java.util.Date 类只精确到年月日,可以使用 java.sql.Timestamp 类接收时间戳类型数据(精确到秒),但如果不做其它处理,最终得到的数据会像这样:2021-03-23T02:30:00.000+0000。可以使用@JsonFormat 注解解决此问题。

首先添加对应插件包:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.11.1</version>
</dependency>
<!-- JsonFormat注解-->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.2.0</version>
</dependency>

然后在用来接收 mysql 数据库数据的实体类的对应属性上应用注解:

1
2
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Timestamp createdTime;

这样,最终取得的数据就可以得到 pattern 中设定的样式。

二、从前端传入的不同样式时间戳如何正确存入对应的实体类

可以使用 @DateTimeFormat 注解解决,首先引用插件:

1
2
3
4
5
6
<!-- joda-time -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.3</version>
</dependency>

然后在对应的实体类属性上使用注解:

1
2
3
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Timestamp createdTime;

三、spring boot 拦截器小细节

在创建拦截器时一定要重写 HandlerInterceptor 的全部方法,即使有方法不用,否则在配置拦截器时排除路径会不生效。

参考文献:

https://www.cnblogs.com/mracale/p/9828346.html


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!