c语言编程笔录

首页 >   > 笔记大全

笔记大全

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 更新了驱动类名,老的驱动类名在后续版本中可能会被移除,而通过添加参数的方式,可以统一处理多个不同的库的驱动类名。这样一来,改动会更小,而且维护起来也比较方便。