本文最后更新于: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>
<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
| <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