mybits源码 Cannot find class: com.mysql.jdbc.Driver

mybits源码 Cannot find class: com.mysql.jdbc.Driver

前言

数据库版本: mysql Ver 14.14 Distrib 5.7.34, for linux-glibc2.12 (x86_64) using EditLine wrapper
java版本: java version “1.8.0_141”
idea工具版本 2021.2.3
在下载了mybits3.5.10 版本的源码(https://github.com/mybatis/mybatis-3)
配置了 config.xml 后

   <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://ip:port/mybits?useUnicode=true"/> //ip:port 为自己的端口,数据库连接正常的
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>

启动项目报以下错误

### Error querying database.  Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: com.mysql.jdbc.Driver
### The error may exist in org/apache/ibatis/test/UserMapper.xml
### The error may involve org.apache.ibatis.test.testMapper.test
### The error occurred while executing a query
### Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: com.mysql.jdbc.Driver
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:153)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:76)
	at org.apache.ibatis.test.testController.main(testController.java:42)
Caused by: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: com.mysql.jdbc.Driver
	at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.initializeDriver(UnpooledDataSource.java:244)
	at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:223)
	at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:219)
	at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.getConnection(UnpooledDataSource.java:95)
	at org.apache.ibatis.datasource.pooled.PooledDataSource.popConnection(PooledDataSource.java:432)
	at org.apache.ibatis.datasource.pooled.PooledDataSource.getConnection(PooledDataSource.java:89)
	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:337)
	at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86)
	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)
	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:89)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
	... 4 more

Process finished with exit code 1

解决办法

网上给出的方法大多能解决 spring集成mybits暴露的错误

  1. “com.mysql.jdbc.Driver” 中 少引号 或者 多空格
  2. maven引入的 mysql:mysql-connector-java 版本问题 与 mybits 不兼容,源码下载默认引入的8.0.27
  3. 通过配置Data Sources Drivers 中的Drivers 驱动
    在这里插入图片描述
    在这里插入图片描述
    尝试过以上方法的笔者,都不行。最主要的问题日志已经告诉,找不到类,虽然maven引入了, idea左边的external libraries 也有maven的mysql,可就是ClassLoader 加载不了类,这个类没有。
    既然读取不到maven引入的 ,那就自己引入到 external libraries

File -->Project Settings -->Libraries --> + --> java --> C:\Users\XXX.m2\repository\mysql\mysql-connector-java\8.0.27\mysql-connector-java-8.0.27.jar

引入之后运行 就正常了
在这里插入图片描述
结果上面一段红色 需要将

<property name="driver" value="com.mysql.jdbc.Driver"/>
改为
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>

于是困扰半天的问题就解决了,可以愉快的调试源码了

附上代码

mybitsconfig.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>
    <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://192.168.207.136:3306/mybits?useUnicode=true"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="org/apache/ibatis/test/UserMapper.xml"/>
    </mappers>
</configuration>

testController

public class testController {

  public static void main(String[] args) {
    String resource = "org/apache/ibatis/test/mybitsconfig.xml";
    Reader reader;
    try {
      reader = Resources.getResourceAsReader(resource);
      SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);

      SqlSession session = sqlMapper.openSession();
      try {
        Map<String,Object> map = session.selectOne("org.apache.ibatis.test.testMapper.test", 1);
        System.out.println(map.get("_id").toString() + ":" + map.get("name").toString());
      } finally {
        session.close();
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

testMapper

public interface testMapper {

  Map<String,Object> test();
}

testMapper.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.apache.ibatis.test.testMapper">

  <select id="test" resultType="map">
        select _id, name  from user limit 1
  </select>
</mapper>
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星之尘星

您的打赏将激励着我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值