初次學習mybatis,寫了一個最簡單的demo,然而運行報錯:
java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: com.mysql.cj.jdbc.Driver
判斷問題出在driver驅動上,根據網上常見解決辦法依次排查(我的MySQL版本是8):
step 1.檢查maven依賴,好像沒問題,很多人就是把mysql-connector-java版本從5升到8就好了:
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
</dependencies>
step 2.檢查mybatis配置文件:嘗試在url "jdbc:mysql:///study?serverTimezone=UTC"中添加參數“&useSSL=false”,仍然報錯。
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///study?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
step 3.偶然在maven倉庫發現mysql-connector-java有更新版本,決定一試,把version 8.0.17換為8.0.23
替換后果然運行成功,看來問題還是在step 1,如果你也試了各種辦法無解,可以再關注下是不是mysql-connector-java版本的問題。
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>