今天在工作中使用mybatis,配置文件如下:
server:
port: 2000
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath*:/mybatis/mapper/*Mapper.xml
logging:
level:
com.atguigu.crowd.mapper: debug
com.atguigu.crowd.test: debug
测试数据库连接时
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyBatisTest {
@Autowired
private DataSource dataSource;
private Logger logger = LoggerFactory.getLogger(MyBatisTest.class);
@Test
public void testConnection() throws Exception{
Connection connection=dataSource.getConnection();
logger.debug(connection.toString());
}
}
报了下面的异常:
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) ~[spring-beans-5.1.8.RELEASE.jar:5.1.8.RELEASE]
... 43 common frames omitted
Caused by: java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver
at org.springframework.util.Assert.state(Assert.java:94) ~[spring-core-5.1.8.RELEASE.jar:5.1.8.RELEASE]
说是不能够加载mysql驱动类,我试着将配置文件中的driver-class-name中的cj去掉
server:
port: 2000
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
mybatis:
mapper-locations: classpath*:/mybatis/mapper/*Mapper.xml
logging:
level:
com.atguigu.crowd.mapper: debug
com.atguigu.crowd.test: debug
结果并没有什么用,百度上说是因为pom中jdbc的版本太低了,要将5版本调到8版本,但是我的pom中的jdbc版本是8.0.16,并不是版本低的问题
很迷惑,查了很长时间资料,最后不怀希望的抱着试试的态度把jdbc的版本降低到8.0.13
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
竟然意外的运行成功了:
原来不是版本低的问题,而是版本太高的问题。。。。