最近在做一个根据时间段查询数据的表格,发现前端传的时间到打印出sql的查询时间相差8个小时。经过断点调试,发现是mybatis时区转换错误。
前端传到后端的数据是对的,sql打印的时间是错的。
两种办法:
1.修改连接数据库时区
application.yml 或者application.properties 文件中数据库连接方式追加时区设置serverTimezone=GMT+8,这里转换+号为 %2b 后使用
spring:
datasource:
# 主数据源
datasource:
driverClassName: com.mysql.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3306/testData?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2b8&useSSL=false
username: root
password: root
2.查询时映射实体改成string,格式为 "yyyy-MM-dd HH:mm:ss"