首先mybatis只是个操作数据库的框架,问题出现应该是在mysql数据库。
通过
show variables like "%time_zone%";
查询mysql数据库发现结果为
system_time_zone UTC
time_zone SYSTEM
(我的mysql数据库在linux服务器上)
linux系统时区是UTC,而mysql使用的是系统时区。
到这里有两个解决办法:(个人倾向于第二种)
1、修改mysql数据库的my.cnf文件的[mysqld]字段,添加default-time-zone=+8:00
2、修改linux系统时区为Asia/Shanghai
mysql数据库运行在docker容器中,所以要修改mysql容器的时区为Asia/Shanghai。
进入mysql容器,链接文件,退出mysql容器,重启mysql(一气呵成)
docker exec -it mysql bash
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
exit
docker restart mysql