行业资讯 2025年08月6日
0 收藏 0 点赞 705 浏览 1299 个字
摘要 :

文章目录 一、问题阐述 二、解决方案 方法1、统一配置实现格式化 方法2、注解配置(借助jackson注解) 方法3、注解配置(借助fastjson注解) 总结 在我们使用Mybatis……




  • 一、问题阐述
  • 二、解决方案
    • 方法1、统一配置实现格式化
    • 方法2、注解配置(借助jackson注解)
    • 方法3、注解配置(借助fastjson注解)
  • 总结

在我们使用Mybatis开发时,针对数据Datetime日期类型或者Timestamp日期类型时,在Mapper映射为Domain实体并通过@ResponseBody转为json格式的数据返回时,我们会发现,日期类型数据往往不是我们想要的格式,我们需要对其统一做格式化处理

一、问题阐述

首先,Java潘老师带大家看下问题产生的情形:
1)数据库日期字段类型,以创建时间为例:

create_time datetime NOT NULL

2)实体中对应的Java字段类型

private Date createTime;

3)Mapper.xml中的映射配置

<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />

接着,我们请求后返回的json数据,它的日志格式如下:

"createTime": "2021-09-07T03:21:28.000+00:00"

而数据库的时间为2021-09-07 11:21:28发现不仅格式不是我们想要的,而且时间还差了8小时,也就是时区也存在问题。

二、解决方案

解决该问题有两个办法:

方法1、统一配置实现格式化

1) 我这里是SpringBoot项目,首先最简单粗暴的方式就是直接统一配置进行格式化,依赖jackson包,另外我们需要在application.yml新增如下配置:

spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

如果是application.properties格式文件则配置如下:

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

Java潘老师亲测经过该配置之后,确实返回结果都实现了统一,而且时区问题也解决了。

方法2、注解配置(借助jackson注解)

我们也可以在实体类的时间字段上使用注解来针对性的格式化日期(依赖jackson包)类似如下:

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

这样相对配置会多一些,但可以满足不同情形下对不同日期格式的定制化需求。

据说第一种统一配置的方法,针对请求日期格式的入参也必须满足此格式,但Java潘老师没试过就不多说了。

方法3、注解配置(借助fastjson注解)

此方法依赖fastjson包:

@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date createTime;

总结

Java潘老师发现,该两种方法可以合用,而且第二种优先级较高,也就说两种你都配置,会以@JsonFormat为准,如果没加@JsonFormat注解则默认会使用统一配置的格式,这样灵活性更好。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/8091.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号