mybatis配置文件报错

关于mybatis
报错如下:

img

报错原文如下:

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


配置文件如下:

img

在这里搜了挺多办法 没啥用 特来求问

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

【相关推荐】



  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7640722
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:【Mybatis】Mybatis延迟加载及其原理和延迟加载配置
  • 您还可以看一下 刘英杰老师的MyBatis 入门视频教程课程中的 mybatis 简介和入门小节, 巩固相关知识点
  • 除此之外, 这篇博客: mybatis数据库信息使用配置文件,数据库字段使用驼峰命名法转换字段中的 使用配置文件写入数据库信息,然后映射到mybatis文件中 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    目录结构:
    在这里插入图片描述
    在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>
    

    测试结果:
    在这里插入图片描述


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^