问题描述
使用SSM返回Json对象时,发现数据库中datetime的数据字段返回的是date时间戳,如图
查看所涉及到实体时间类型为如图
实体中设置的为date时间戳类型,在页面中需要显示的是"yyyy-MM-dd HH:mm:ss"这种时间格式
解决方案
将实体中的date时间戳改为指定datetime类型时间字段
在SSM进行时间格式转换时,需要在实体中加上如下
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") ,即可将date返回的对象为指定的类型。
同时需要在SSM项目中引入JsonFormat方法的包,如下在pom.xml 中加入
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.9</version>
</dependency>
在SSM的是实体中找到该字段的get方法,
再次查询时就会将date字段转换为datetime时间字段,如图
以上是使用JsonFormat从数据库中读取的时间格式转换
将使用date类型的时间以datetime类型存储到数据库
解决方案如同上述
在实体中的date时间变量中加上如下包,如图
即可实现上述问题
整理
1、在实体中使用date类型set数据库中的datetime类型,并在页面中以"yyyy-MM-dd HH:mm:ss"显示,需要使用@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") ,对date变量进行注解
2、将date类型以datetime格式存储到数据库,需要使用到@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") ,对date变量进行注解
3、对于页面和数据库中的时间类型转换中,最好在数据库中都是用相同时间类型,比如都是用date类型,然后在SSM项目中对date类型转换为所需求的格式
具体关于实体时间类型date和数据库时间datetime类型的转换解决方案请转至