当前位置: 首页 > news >正文

Mybatis -- 读取 DATE 类型字段时可能遇到的问题(夏令时问题)

  在使用 MYBATIS 读取数据库字段的时候,我们一般需要为查询字段指定数据类型。特别是当我们使用 mybatis generator 去生成对应的接口代码时,会自动按照数据库字段类型生成响应映射规则的代码。
  如下,左侧是 date 类型生成的字段映射规则,右侧是 datetime 或者 timestamp 类型生成的字段映射规则。
在这里插入图片描述

可能出现的问题

数据库存储了 date 类型的字段,代码中使用了 JdbcType.DATE 做字段映射,导致 mybatis 读取出来的日期有时候会少一天。
例如,数据库日期字段值为 1991-07-01 ,读取到 java 的时间转为 CST 时区时间变成了 1991-06-30 23:00:00

解决方案

jdbcType=JdbcType.DATE 修改为 jdbcType=JdbcType.TIMESTAMP

问题重现(jdbcType=JdbcType.DATE)

先了解一下夏令时执行时间段

1986年至1991年,中华人民共和国在全国范围实行了六年夏令时,每年从4月中旬的第一个星期日2时整(北京时间)到9月中旬第一个星期日的凌晨2时整(北京夏令时)。除1986年因是实行夏令时的第一年,从5月4日开始到9月14日结束外,其它年份均按规定的时段施行。夏令时实施期间,将时间向后调快一小时。1992年4月5日后不再实行。

1、前端传递的日期字符串为 1991-07-01,后端时区设置为 GMT+8 ,反序列化得到时间为 Mon Jul 01 01:00:00 CDT 1991(夏令时时间 1991-07-01 01:00:00)
2、mybatis 保存该时间数据时解析为字符串 1991-07-01 (DATE 类型只保留年月日),数据库内存储为 1991-07-01
3、mybatis 再次读取时,由于不包含时分秒信息,反序列化得到的时间为 Mon Jul 01 00:00:00 CDT 1991(夏令时 1991-07-01 00:00:00),再序列化转为 CST 时区的字符串时变为 1991-06-30 23:00:00

http://www.lryc.cn/news/163330.html

相关文章:

  • 第10节-PhotoShop基础课程-选区工具
  • 【C++】C++动态内存管理
  • Java中使用JTS实现WKT字符串读取转换线、查找LineString的list中距离最近的线、LineString做缓冲区扩展并计算点在缓冲区内的方位角
  • 【异步VS多线程】异步VS多线程区别
  • 【nosql】redis之高可用(主从复制、哨兵、集群)搭建
  • js如何实现数组去重的常用方法
  • XREAL Air 2 Pro发布,加入电致变色技术,拓展AR眼镜使用场景
  • Go基础11-理解Go语言的包导入
  • 【MySQL数据库原理】在MySQL Workbench界面运行SQL代码——学生管理系统
  • 高分三号1米分辨率飞机检测识别数据集
  • Unity 之Material 类型和 MeshRenderer 组件中的 Materials 之间有一些重要的区别
  • 【LeetCode-简单题】977. 有序数组的平方
  • 【笔试强训选择题】Day39.习题(错题)解析
  • Prometheus-Alertmanager 警报管理器-部署和设置
  • 恒运资本:小盘股的优点?投资小盘股要注意哪些方面?
  • LeetCode:2. 两数之和
  • OpenCV(二十四):可分离滤波
  • 【JS进阶】防抖与节流
  • 【css】linear-gradient()的用法
  • java: 读取snakeyaml-1.26.jar各种jar包时出错; error in opening zip file
  • 医疗知识图谱 neo4j
  • 【LeetCode-简单题】367. 有效的完全平方数
  • vben-admin中渲染table表格时怎么处理不同的数据结构
  • 从零开始在树莓派上搭建WordPress博客网站并实现公网访问
  • Go基础18-理解方法的本质以选择正确的receiver类型
  • Go基础12-理解Go语言表达式的求值顺序
  • OJ练习第165题——修车的最少时间
  • 纯前端实现 导入 与 导出 Excel
  • 关于一次两段式提交和数据库恢复数据我的一些想法
  • 阿里巴巴springcloud的gateway网关如何用继承接口WebExceptionHandler定义一个json格式的404错误页面实例