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 ...
随机推荐
- C基础知识(4):指针--p=&a和*p=a的区别详解
对于*p,[p = &a]和[*p = a]的区别详解 (1) p=&a就是用a的地址对p赋值,&p不改变,变的是p (2) *p=a就是把p所指向的那一内存空间的值赋值为a, ...
- Redis客户端信息的存取
字符串的存: set name xxx 字符串的取: get name Hashes的存: HMSET xxx xxx xxx Hashes的取: HGETALL xxx Lists的存: lpush ...
- Unity打包出来的App 跳转其他 App
void Start()//在android测试成功 { bool fail = false; string bundleId = "跳转的包名";//包名称 AndroidJav ...
- unsigned char 与unsigned long互换
unsigned long UCharToULong(unsigned char * pucVar ){unsigned long ulTemp=0;ulTemp=(unsigned long)(*p ...
- PHP中的data()函数
date()是我们常用的一个日期时间函数,下面我来总结一下关于date()函数的各种形式的用法,有需要学习的朋友可参考. 格式化日期date() 函数的第一个参数规定了如何格式化日期/时间.它使用字母 ...
- 微信小程序打开地图选择位置
wx.getLocation({ type: 'wgs84', success(res) { const latitude = res.latitude const longitude = res.l ...
- 友善的树形DP
一棵树,如果有序点对(x,y)之间路径的长度取模于3==0,那么ans0便加上这个长度: 如果取模于3==1,那么ans1便加上这个长度: 如果取模于3==2,那么ans2便加上这个长度: 让你求an ...
- Java switch case 语句
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. 语法 switch(expression){ case value : //语句 break; //可选 ca ...
- phpmyadmin出现空密码登录被禁止 (参见 允许空密码)的解决办法
在Windows或者Linux下mysql安装后默认的密码为空,又当我们又安装了mysql的管理工具phpmyadmin后登陆时出现“空密码登陆呗禁止(参见允许密码为空)”.不能登录成功 ...
- Spring Cloud Gateway真的有那么差吗?
动机 已经不止一次看到"Spring Cloud Gateway性能比Zuul更差"的言论了,不少人人云亦云,来问我,既然如此,那Spring官方还开发Spring Cloud G ...