关于mybatis
报错如下:
报错原文如下:
org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: com.mysql.cj.jdbc.Driver
### Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: com.mysql.cj.jdbc.Driver
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:200)
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:185)
at com.yogurt.dao.StudentDao.addStudent(StudentDao.java:31)
at SimpleTest.insertTest(SimpleTest.java:19)
at java.lang.reflect.Method.invoke(Method.java:498)
at java.util.ArrayList.forEach(ArrayList.java:1259)
at java.util.ArrayList.forEach(ArrayList.java:1259)
Caused by: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: com.mysql.cj.jdbc.Driver
at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.initializeDriver(UnpooledDataSource.java:221)
at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:200)
at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:196)
at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.getConnection(UnpooledDataSource.java:93)
at org.apache.ibatis.datasource.pooled.PooledDataSource.popConnection(PooledDataSource.java:404)
at org.apache.ibatis.datasource.pooled.PooledDataSource.getConnection(PooledDataSource.java:90)
at org.apache.ibatis.transaction.jdbc.JdbcTransaction.openConnection(JdbcTransaction.java:139)
at org.apache.ibatis.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:61)
at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:338)
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:84)
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49)
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:198)
... 6 more
配置文件如下:
在这里搜了挺多办法 没啥用 特来求问
1:观察Maven中使用有Mysql驱动,是否与数据库版本进行匹配
2:检查你的Mysql版本,如果是5点几的话最好用com.mysql.jdbc.Driver,8使用com.mysql.cj.jdbc.Driver
你的mysql版本跟你的mybatis配置对不上,MySQL5版本用com.mysql.jdbc.Driver,8版本用com.mysql.cj.jdbc.Driver
同时你的依赖也要修改掉,mysql-connector-java,MySQL5版本用5.1.49,8版本用8.0.29
【相关推荐】
目录结构:
在resources文件夹下新建jdbc.properties文件,写入数据库信息
#数据库配置文件
jdbc-driver=com.mysql.jdbc.Driver
jdbc-url-1=jdbc:mysql://127.0.0.1:3306/test
jdbc-username-1=root
jdbc-password-1=root
jdbc-url-2=jdbc:mysql://127.0.0.2:3306/test
jdbc-username-2=test
jdbc-password-2=test
在databaseConfig.xml文件引入配置文件,数据库信息取配置文件里配置的变量名
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 引入配置文件jdbc.properties-->
<properties resource="jdbc.properties"/>
<!-- 使用驼峰命名法转换字段,将数据库字段flow_id转换成实体类flowId
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings> -->
<!-- 别名方式2,自动扫描,将JAVA类的类名作为类的类别名 -->
<typeAliases>
<package name="model"/>
</typeAliases>
<!--配置mybatis运行环境 -->
<environments default="development">
<environment id="development">
<!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
<transactionManager type="JDBC"/>
<!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
<!-- POOLED 表示支持JDBC数据源连接池 -->
<!-- UNPOOLED 表示不支持数据源连接池 -->
<!-- JNDI 表示支持外部数据源连接池 -->
<dataSource type="POOLED">
<!-- 1.加载数据库驱动 -->
<property name="driver" value="${jdbc-driver}"/>
<!-- 2.数据库连接地址 -->
<property name="url" value="${jdbc-url-1}"/>
<!-- 数据库用户... -->
<property name="username" value="${jdbc-username-1}"/>
<!-- 数据库密码... -->
<property name="password" value="${jdbc-password-1}"/>
</dataSource>
</environment>
</environments>
<!-- 注册映射文件: java对象与数据库之间的xml文件路径! -->
<mappers>
<mapper resource="mapper/SQLMapper.xml"/>
</mappers>
</configuration>
测试结果: