本打算在maven项目中配置mybatis试试看,想到mybatis如果不是在容器中运行,那么他的事务控制实际上可以使用的是jdbc的提交和回滚,这就要在pom.xml文件中配置mysql-connector-java了,找到一个网站https://mvnrepository.com/,里面可以索引maven中心仓库,搜索mysql-connector-java

我选择了6.0.6进行配置

这下就出问题了,运行了一个jdbc程序,就出现标题所提到的问题了,是因为数据库驱动版本太高了,数据库和系统时区的差异所造成的,解决办法有两个:

一、换成低版本的驱动,比如5.1.43版本的

二、在mysql中执行命令

set global time_zone='+8:00'

或者在数据库驱动的url后加上serverTimezone=UTC参数(时区参数)

如果serverTimezone是第一个参数(?后面就是),则

jdbc:mysql://localhost/tradeonline?serverTimezone=GMT

如果serverTimezone不是第一个参数,则

jdbc:mysql://localhost/tradeonline?characterEncoding&serverTimezone=GMT

但是这样写会报错的The reference to entity “serverTimezone” must end with the ‘;’ delimiter. (对"serverTimezone"的引用必须以';'分隔符结尾)的错误提示,将代码改为:

jdbc:mysql://localhost/tradeonline?characterEncoding&serverTimezone=GMT

因为在XML配置时,要用&代替。另外,如果需要使用gmt+8时区,需要写成GMT%2B8,否则会被解析为空。(PS:数据库驱动JDBC新版本的名字改成了com.mysql.cj.jdbc.Driver)