LocalDatetime 与 mybatis、json的坑
总所周知,localdatetime是jdk8 推出的关于日期计算非常方便地一个类,一旦开始用上就欲罢不能。但是在使用的时候,坑还是蛮多的。
一、mybatis与LocalDatetime
如果直接将实体里面所有的Date类型换成LocalDatetime之后,运行程序是会报异常的。此时,可以加入以下依赖:
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis-typehandlers-jsr310</artifactId>
- <version>1.0.2</version>
- </dependency>
在mybatis3,.4以上,加入该依赖即可生效。mapper等跟之前一样无需修改。
二、LocalDatetime与json
此处localdatetime转json用的是jackson,其他转json的工具未测
待转类:
- public class MyTest {
- private LocalDateTime now;
- public LocalDateTime getNow() {
- return now;
- }
- public void setNow(LocalDateTime now) {
- this.now = now;
- }
- }
将该类实例直接转成json之后输出
- {
- "now" : {
- "dayOfMonth" : 29,
- "dayOfWeek" : "FRIDAY",
- "dayOfYear" : 363,
- "hour" : 23,
- "minute" : 45,
- "month" : "DECEMBER",
- "monthValue" : 12,
- "nano" : 128000000,
- "second" : 10,
- "year" : 2017,
- "chronology" : {
- "id" : "ISO",
- "calendarType" : "iso8601"
- }
- }
- }
这样一个时间显得有点琐碎。我们一般跟前端交互的时候,用的都是形如 yyyyMMdd HH:mm:ss 这样的格式。所以此时就需要转下格式
- {
- "now" : "2017-12-29 23:50:32"
- }
这是时候,就需要使用到注解
作为接受参数时,使用
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
作为格式化输出时,需要使用
@JsonSerialize(using = LocalDateTimeSerializer.class)
三 奇怪的时间
有时候,使用json序列化之后的时间,会发现比传参的时间差距有几个小时.一开始感觉很奇怪,后来发现json序列化的时候指定时区为GMT+8之后,就不会出现该现象.
LocalDatetime 与 mybatis、json的坑的更多相关文章
- Maven搭建SpringMVC+MyBatis+Json项目(多模块项目)
一.开发环境 Eclipse:eclipse-jee-luna-SR1a-win32; JDK:jdk-8u121-windows-i586.exe; MySql:MySQL Server 5.5; ...
- Go语言结构体转json的坑
Go语言结构体转json的坑 标签(空格分隔): go json.Marshal() JSON输出的时候必须注意,只有导出的字段(首字母是大写)才会被输出,如果修改字段名,那么就会发现什么都不会输出, ...
- springboot+mybatis环境的坑和sql语句简化技巧
1.springfox-swagger实体类无限递归 https://hacpai.com/article/1525674135818 里面有不完美的解决方案 不用动源码的解决方案也有,在swagge ...
- oracle的Date类型遇到MyBatis产生的坑
坑描述: 公司的订单表数据量巨大(亿级),在进行查询的时候,发现一个慢查询. 背景: 数据库:oracle 表:T_order 索引字段:create_date (字段类型 date) 慢查询sql ...
- tk.mybatis通用工具采坑记
tk.mybatis通用工具pom <!--mybatis依赖--> <dependency> <groupId>org.mybatis.spring.boot&l ...
- 微信小程序后台springboot+mybatis+mysql“采坑”集锦
"采坑"错误集锦 1.service层 错误描述:2019-04-14 22:09:52.027 ERROR 8416 --- [nio-8082-exec-5] o.a.c.c. ...
- MyBatis日期有坑
使用MyBatis时,可能会遇到日期格式的时间段问题,当数据库的时间为DATE类型时,MyBatis的jdbcType应该使用DATE,否则,有时间会出现莫名的数据找不到的问题,具体原因,可以查看源码 ...
- mybatis like 的坑
昨天快要下班的时候组长交代了一个任务,说起来很简单,是这样的: 系统里面有一个字段为name,这个name允许设置为特殊字符,目前根据name模糊匹配,如果遇到特殊字符 比如 "$" ...
- 反序列化json的坑
json格式没有错误,内容没有什么异常 反序列化一直显示第一行有异常符号, 在https://jsonlint.com/上面检测了一下,发现了这个 解决办法: UTF-8格式编码 改成 UTF-8无B ...
随机推荐
- php register_shutdown_function响应error 配合error_get_last 捕获错误
转自: http://blog.csdn.net/a757291228/article/details/62231125 //一个函数,用来响应 register_shutdown_function ...
- PJzhang:网络数据单位小比特
猫宁!!! 参考链接:https://blog.csdn.net/qq_38880380/article/details/79887704 https://www.cnblogs.com/Flycho ...
- Adobe Acrobat XI 中文版激活方法
Adobe Acrobat XI不仅只是出色的PDF编辑.转换软件.此次更新深度整合了Microsoft Office套件,实现了PDF与Word.Excel以及PowerPoint等文档间的无缝相互 ...
- 华为HCNA乱学Round 8:生成树
- springMVC异常处理总结
a.ExceptionHandlerExceptionResolver 1.@ExceptionHandler --- 统一处理一个controller中(@ExceptionHandler所在con ...
- WCf客户端测试
添加项目ConsoleWCFTest 添加WCFService.WCFServiceProxy 配置App.config <?xml version="1.0" encodi ...
- apache 设置允许跨域
1.首先找到 httpd.conf 文件 找到 #LoadModule headers_module modules/mod_headers.so 把#注释符去掉(也有可能已经默认去掉了) 目的是 ...
- analyticdb(ADB) group by 用法小结
虽说analyticdb(ADB)是支持mysql协议的,但有些具体细节用法是有些区别. 1.group by 字段 mysql group by select id,title,describe w ...
- BUUOJ misc 金三胖
可以看到是有三帧的内容有flag的 直接 convert aaa.gif .png 逐帧分解,得到: flag{he11ohongke} (kali真好用呀)
- SpringMVC异常体系
在服务端经常会遇到需要手动的抛出异常,比如业务系统,校验异常,比较通用的处理方案是在最顶层进行拦截异常,例如Struts的全局异常处理,而Spring的异常处理机制就相对于Struts来说好用多了 ...