前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >SpringBoot中Mybatis时区问题

SpringBoot中Mybatis时区问题

作者头像
林老师带你学编程
发布于 2019-07-02 02:29:06
发布于 2019-07-02 02:29:06
3K00
代码可运行
举报
文章被收录于专栏:强仔仔强仔仔
运行总次数:0
代码可运行

最近遇到一个巨坑的bug,mybatis打印出来sql日志显示数据入库成功,但是数据库查询却怎么也查询不到数据,debug日志打了一堆,硬是没发现任何问题。

问题背景

这边先给大家介绍一下bug背景,有一个订单服务需要实时获取第三方接口订单数据,然后对第三方的json数据进行解析入库。流程其实很简单,但是数据库就是没有当天的订单数据,代码检查了好几遍都没发现问题。

问题分析

对于这种现象,出问题的地方一般有以下几个地方:

  1. 第三方订单数据获取失败
  2. 第三方订单数据确实没有今日订单数据
  3. 程序执行到mybatis入库的时候出现异常
  4. 因为代码问题,导致入库数据出现异常

异常排查

针对上述可能出现的问题,博主也一一进行了排查,发现今日订单数据存在且数据正常,执行期间没有任何异常,控制台也成功打印出sql日志,sql语法和参数也都没有任何问题,一一排查完,发现都不是这些问题的时候,真的是好绝望啊。。。

深入思考

后面针对上述现象,博主仔细的思考了一下,如果控制台都打印出sql日志了,那数据库插入操作肯定是没问题的,那会不会是数据插入的数据出问题了,给插入到其它日期的订单数据中了呢,用订单id一查,发现真的是插入日期出现问题,导致今日订单全无,都往前了一天。

解决问题

最后查资料才发现,竟然是mybatis本身的问题,mybatis在插入date类型数据的时候,会有时区问题。例如2019-06-15插入到数据库中会变成2019-06-14,这也是导致插入数据消失的罪魁祸首。

要解决这个问题其实很简单,修改application.properties中的 mybatisspring.datasource.url=jdbc:mysql://127.0.0.1:3306/xuanyi?useUnicode=true&characterEncoding=utf8后面增加&serverTimezone=GMT%2B8

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xuanyi?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8

总结

解决问题很解决,难的是怎么去发现问题。特别是这种会导致数据异常的bug,最为致命,大家上线之前一定要做好充分的测试,否则还真有可能发生删库跑路的事情~

林老师带你学编程https://wolzq.com

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年06月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring Boot & MyBatis
前面文章介绍了如何快速体验SpringBoot,但是在实际项目中作用不大,因为缺少了很多必要的组件。本文介绍如何快速接入MyBatis&MySQL 本文在一个可以运行的SpringBoot项目上增加配置,如果有疑问,可以参考SpringBoot七分钟快速实践 Spring Boot七分钟快速实践 Spring Boot & MyBatis Spring Boot & Redis Spring Boot & Swagger Spring Boot & 单元测试 Spring Boot & Actu
十毛
2019/03/27
1.1K0
SpringBoot缓存相关问题
框架注解 在写代码时,特别是SpringMVC框架下的代码,在dao层,service层,controller层,开始写代码时,一定要先在类上加@注解,切记不能再犯这个小错误. MyBatis与MySQL版本 在使用MyBatis框架连接数据库时,运行程序出现如下异常: java.sql.SQLException: Unknown system variable 原因 mysql-connecter-java的版本过低,很显然是数据库驱动程序与数据库版本不对应. query cache在MySQL5.7.
攻城狮Chova
2022/01/22
3510
SpringBoot缓存相关问题
Mybatis-Plus快速入门使用
不需要勾选依赖,我们自己在pom.xml加入就可以了,我这里习惯性勾上了。尽量不要同时引入mybatis和mybatis-plus
乐心湖
2020/07/31
5340
Mybatis-Plus快速入门使用
MyBatis & MyBatis Plus
MyBatis-Plus与通用Mapper的优点类似。参考MyBatis & 通用Mapper
十毛
2019/03/27
3.9K0
如何保护 SpringBoot 配置文件中的敏感信息
使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些。
好好学java
2021/10/11
7230
mybatis-plus使用上需要注意的问题
之前,开发项目使用的是tk-mapper,当使用批量操作时,通常使用insertList就可以了。但是,最近的项目使用的是mybaits-plus,在使用批量操作saveBatch的使用,却遇到了一个问题,这个一开始让我以为我的数据出现了重复,但是仔细看,不是数据出现了重复,而是因为有一个字段相同,报唯一索引字段重复插入 Duplicate entry。
路行的亚洲
2021/08/20
3.1K0
分库分表—2.详细介绍二
(3)MigrateConfig类会加载migrate.properties配置文件里的配置
东阳马生架构
2025/02/17
570
docker 连接外部数据库_SpringBootVFS
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/15
2.2K0
Spring Boot(四)Mybatis-Pus
如果已经配置了逻辑删除,那么实际上的删除操作就是将字段deleted变成1,其实实际并未删除该数据,但是相应的在更新查询操作中也会自动带上deleted=0的才能操作,这些逻辑删除可以防止数据误删,以后可以一键删除delete=1的数据
HcodeBlogger
2020/07/14
4980
Spring Boot MyBatis配置多数据源
项目中有时候需要用到多数据源,但是Spring Boot的自动配置并不支持,所以需要手动做很多工作,其实也不难 整体架构 项目架构 添加依赖 <dependency> <groupId>o
十毛
2019/04/29
7120
Spring Boot MyBatis配置多数据源
数据库表插入时间不对
使用SpringBoot框架插入时间时,发现时间减少了14个小时,通过日志输出发现错误并不在sql语句,也就是我的插入的时间并没有错,疑惑的是到数据库表里就时间不对劲了。
乐心湖
2020/07/31
1.9K0
SpringBoot之SpringBoot整合Mybatis SpringBoot之SpringBoot整合JdbcTemplate
记得添加数据库的驱动,上一章整合JdbcTemplate的时候已经添加过了,忘记的可以看一下《SpringBoot之SpringBoot整合JdbcTemplate》
彼岸舞
2021/01/27
7800
SpringBoot之SpringBoot整合Mybatis
    


SpringBoot之SpringBoot整合JdbcTemplate
Mybatis-plus快速使用
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
暴躁的程序猿
2022/03/23
2400
Mybatis-plus快速使用
跟我学Springboot开发后端管理系统5:数据库读写分离
在Matrix-web后台管理系统中,使用到了数据库的读写分离技术。采用的开源的Sharding-JDBC作为数据库读写分离的框架。Matrix-Web后台数据库这一块采用的技术栈如下:
方志朋
2022/01/06
9010
跟我学Springboot开发后端管理系统5:数据库读写分离
springboot基本包引入
springboot基本包引入 当我们创建一个springboot项目时我们需要一个springboot的项目依赖,这个依赖添加后标志着着这个maven项目成为了一个speingboot项目,依赖如下
默 语
2024/11/20
380
如何保护 Spring Boot 配置文件中的敏感信息
使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些。
搜云库技术团队
2022/02/17
1.3K0
Spring Boot配置多数据源
如果尝试修改只读数据源则会抛出异常:java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
十毛
2021/07/13
7250
JDBC-初识
连接对象内部其实包含了Socket对象,是一个远程的连接接,比较耗时!这是Connection对象管理的一个特点。实际开发中,为了提高效率,都会使用连接池来管理连接对象。
cherishspring
2019/10/14
2920
JDBC-初识
一文通关之MybatisPlus
MyBatisPlus 1、MyBatisPlus概述 需要的基础:把我的MyBatis、Spring、SpringMVC就可以学习这个了! 为什么要学习它呢?MyBatisPlus可以节省我们大量工
yuanshuai
2022/08/22
2400
一文通关之MybatisPlus
SpringBoot使用Mybatis 快速入门
比JDBC要简单点, 对JDBC的一个封装。官网:https://commons.apache.org/proper/commons-dbutils/
憧憬博客
2020/07/21
4480
相关推荐
Spring Boot & MyBatis
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文