使用mybatis 3.5.2的时候遇到了问题:
java.lang.AbstractMethodError:Method com/mysql/jdbc/ResultSet.isClosed()Z is abstract
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:352)
…
原因是因为我用的mysql驱动是mysql-connector-java-5.0.8-bin.jar,与mybatis版本不符合。
在下载mybatis 3.5.2的MyBatis中文管网下又下载了mysql-connector-java-8.0.11.jar。
导入jar包,修改dbconfig.properties中的驱动全类名为driverClass=com.mysql.cj.jdbc.Driver(原本为com.mysql.jdbc.Driver)
问题得以解决。
然后又报错了:
Error querying database. Cause: java.sql.SQLException: The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
出现时区问题了,百度了一下经验贴,有说是在mysql配置文件my-default.ini中加default-time-zone=’+8:00’的,测试之后发现无效,幸好在一篇文章中找到了答案:在访问数据库的Url后面加上以下的语句即可:&serverTimezone=GMT%2B8。
jdbcUrl=jdbc:mysql://localhost:3306/db_test?serverTimezone=GMT%2B8
但文章中说这是在使用MySQL 8.0以上版本(MySQL连接驱动和版本都是8.0以上)的时候出现的问题错误,我的MySQL是5.7版本的,只有驱动时8.0以上的,说明这句话还是不够准确的。