springmvc json日期转换解决方案(总结)

springmvc3.2.0

mybatis1.2.2

问题描述:POJO类中存在date类型,但是通过mybatis存入之后只有年月日,没有时分秒


问题定位:

1、确定插入之前的date是否正确

article是一个pojo类

Date date = new Date();

article.setTime(date);

System.out.println(article.getTime());

打印结果:Mon Aug 15 16:58:02 CST 2016

说明存入之前的日期包括年月日和时分秒


2、确定插入之后的date是否正确

打印插入后该数据

System.out.println(article.getTime());

打印结果:Mon Aug 15 00:00:00 CST 2016


3、通过1和2确定问题,问题发生在数据库交互过程中,即使用mybatis进行插入数据导致日期不完整

对于Ibatis操作Date/Time/DateTime,总结如下:  

pojo的属性类型设置为java.sql.Date(或java.sql.Time, java.sql.Timestamp),此时会严格遵循这三种类型的语义。但此方法因存在前文中提到的性能问题,在JDK1.6以前的JDK版本中能少使用就少使用。  

如果你想在pojo中使用java.util.Date 则要注意:  

完整的日期时间,,要确保jdbcType为空,或为DATE,TIME以外的值  

只需要时间,要指定jdbcType=”TIME”  

只需要日期,要指定jdbcType=”DATE”  

于是将映射的XML文件里的,jdbcType="DATE"这段代码清了就可以了。特此记录


注意:在网上搜了一下,大部分都是这个回答,于是跑去改映射文件的xml,有

<result column="time" property="time" jdbcType="DATE" />

{time,jdbcType=DATE}

两种,清空后报错,改成TIMESTAMP,也报错

看了数据库表设计,time类型写的Date,改成timestamp,重新生成映射文件


总结:将数据库表设计,time类型,date→timestamp,重新生成映射文件


重复2,打印:Mon Aug 15 16:40:49 CST 2016

数据库已经存入,年月日,时分秒


4、通过json返回数据

获取到的结果:"time":1471251908000

说明:通过springmvc读取json的日期错误

解决方法:

实体类的get方法设置@JsonFormat的注解配置

要引入jackson-core.jar,jackson-databind.jar,jackson-annotations.jar(2.x的包)才会自动转换json

    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")

    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

    public Date getTime() {

        return time;

    }

获取到的结果:"time":"2016-08-15 17:05:08"


在进行springmvc 的json 日期显示,搜了网上,发现有好多都是在自定义然后在spring自动注解进行注册,直接添加 @JsonFormat就可以解决问题


参考资料:

mybatis存入数据库后没有时分秒 时间不全 只有年月日

http://www.68idc.cn/help/buildlang/ask/20150305251565.html

spring mvc4使用及json 日期转换解决方案

http://blog.csdn.net/zhanngle/article/details/24123659









  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值