IDEA创建SpringBoot项目整合mybatis时mysqlconnectorjava报错如何解决
更新时间:2023-12-12问题描述
在使用IntelliJ IDEA创建SpringBoot项目整合mybatis时,如果在pom.xml中引入mysql-connector-java依赖,可能会出现以下报错:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
这是因为在最新版本的 mysql-connector-java 中,不再使用 com.mysql.jdbc.Driver,而是使用 com.mysql.cj.jdbc.Driver。解决这个问题的办法有两个,一是引入老版本的 mysql-connector-java,二是在连接 URL 中添加新的参数。
解决方案一:引入老版本的 mysql-connector-java
第一步:在 pom.xml 中去掉 mysql-connector-java 的最新依赖,加入以下依赖:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency>
第二步:重新执行 mvn clean install 命令,在 target 目录下会生成 jar 包和依赖的 jar 包。
解决方案二:在连接 URL 中添加新的参数
第一步:在 pom.xml 中加入最新版 mysql-connector-java 依赖:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.19</version> </dependency>
第二步:在 application.properties 或 application.yml 中添加以下参数:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver或
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver
第三步:在连接 URL 中添加 serverTimezone 参数,例如:
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai
总结
以上两种方法均可以解决 mysql-connector-java 报错的问题,但从长远考虑,建议使用解决方案二。因为出现这个问题的原因是 mysql-connector-java 更新了驱动类名,老的驱动类名在后续版本中可能会被移除,而通过添加参数的方式,可以统一处理多个不同的库的驱动类名。这样一来,改动会更小,而且维护起来也比较方便。