第一次使用mybatis报错,Error querying database,度娘了一下,主要原因就是要将将com.mysql.jdbc.Driver独立出来

一、 问题

Error querying database. Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource…在这里插入图片描述


测试运行的时候全红!!!

二、排查思路

			1. 配置编写错误
			2. 配置文件引用错误或依赖坐标引入及版本问题

三、报错

3.1 驱动?

说我的驱动有问题,资料查了一下说可能是SQL版本错误,集合实际情况排查了一下
在这里插入图片描述

海里捞针还真是,driver写成drive了,尬住了
在这里插入图片描述

3.2 SQL查询ID唯一标识?

存在错误,findById错写成findId!!!啊这是真的在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.3 成功

我还以为真的是小错误,以为真的可以跑了。。。。。还是我以为…Alt
在这里插入图片描述

四、最大问题所在!

要将将com.mysql.jdbc.Driver独立出来
在这里插入图片描述

4.1 mybatis-config.xml配置项

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Cofig 3.0//EN"
        "//http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
        <!--引入外部的db.properties数据库配置文件-->
        <properties resource="db.properties"></properties>
        <!--环境配置-->
        <!--加载类路径下的属性文件-->
        <!--environments是用来配置mybatis环境的-->
        <environments default="development">
            <environment id="development" >
                <transactionManager type="JDBC"/>
                <!--数据库连接(数据库连接池)相关配置,db.properties 文件中的内容-->
                <dataSource type="POOLED">
                        <!-- <property name="driver" value="com.mysql.cj.jdbc.Driver"/> 出现报错的写法-->
                        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                        <property name="url" value="${mysql.url}"/>
                        <property name="username" value="${mysql.username}"/>
                        <property name="password" value="${mysql.password}"/>
                </dataSource>
            </environment>
        </environments>

       <!-- 配置xxxMapper文件的路径配置,该文件主要存放SQL语句-->
       <mappers>
           <mapper resource="mapper/UserMapper.xml"/>
       </mappers>
</configuration>

五、起飞成功

在这里插入图片描述

public class UserTest {
    
    
    @Test
    public void userFindByIdTest() {
    
    
        //1. 获取核心配置文件mybatis-config.xml
        String resources = "mybatis-config.xml";

        //2. 创建流
        Reader reader = null;
        try {
    
    
            //读取mybatis-config.xml配置文件内容到reader对象中
            reader = Resources.getResourceAsReader(resources);
        }catch (IOException e){
    
    
            e.printStackTrace();
            System.out.println("输入流段错误!");
        }
        //3. 初始化mybatis数据库,创建 SqlSessionFactory
        SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
        //4. 创建SqlSession 实例
        SqlSession sqlSession = sqlMapper.openSession();
        //5. 传入参数查询,返回结果
        User user = sqlSession.selectOne("findById",1);
        //6. 输出结果
        System.out.println(user.getUname());
        //7. 关闭流sqlSession
        sqlSession.close();
    }
    }

六、分享一下第一次使用mybatis的几个配置

** 下面是随便排序的,谁先配置,你都懂!**

6.1 pom.xml

<!--引入相关的坐标-->
    <dependencies>
     <!-- mybatis的jar包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>MyBatis</artifactId>
            <version>3.5.11</version>
        </dependency>
        <!--mysql数据库jar坐标配置-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-jdbc-java</artifactId>
            <version>8.0.28</version>
            <scope>runtime</scope>
        </dependency>

        <!-- junit 单元测试jar包坐标依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

6.2 数据库 db.properties配置项

注意哦,db.properties ,db是文件名,可以随便写,但是后缀一定要是 xxx.properties ! properties !properties!


mysql.driver = com.mysql.cj.jdbc.Driver;
mysql.url = jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&characterEncoding=utf8&Unicode=true&useSSL=false
mysql.username=root
mysql.password=root


6.3 mapper 配置项

xxxMapper主要用来存放SQL语句和java对象之间的映射,最好是创建一个mapper文件夹,专门存放xxxMapper这些文件

<?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: 名称空间, 由于映射文件可能有多个,
                为了防止 crud 语句的唯一标识被重复,需要设置空间名称

    mapper 为映射的根节点,namespace指定Dao接口的完整类名,mybatis会依据这个接口,动态创建一个实现类
    去实现这个接口,二这个实现类是一个Mapper 对象
-->

<mapper namespace="com.javaEElcb.pojo.User">
<!--
    select: 查询的statement (声明),用来编写查询语句
    id: 语句的唯一标识
    resultType: 配置返回结果的类型
    parameterType: 传递的参数类型,可以省略
    - - - - - - - - - - - - - - - - - - - - - - - -
    id = "接口中的方法名" parameterType= "传入的参数类型"
    resultType = "返回实体类对象,使用  包.类名"
-->
    <select id="findById"  parameterType = "int"
            resultType = "com.javaEElcb.pojo.User">
        select * from users where uid=#{id}
    </select>
</mapper>

6.4 mybatis-config.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Cofig 3.0//EN"
        "//http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
        <!--引入外部的db.properties数据库配置文件-->
        <properties resource="db.properties"></properties>
        <!--环境配置-->
        <environments default="development">
            <environment id="development" >
                <transactionManager type="JDBC"/>
                <!--数据库连接相关配置,db.properties 文件中的内容-->
                <dataSource type="POOLED">
                        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                        <property name="url" value="${mysql.url}"/>
                        <property name="username" value="${mysql.username}"/>
                        <property name="password" value="${mysql.password}"/>
                </dataSource>
            </environment>
        </environments>

       <!-- 配置xxxMapper文件的路径配置,该文件主要存放SQL语句-->
       <mappers>
           <mapper resource="mapper/UserMapper.xml"/>
       </mappers>
</configuration>

在这里插入图片描述

		有一段时间了,回看了一下代码.........数据库连接中的db配置文件多了一个不该出现的**<font color="red">分号</font>**!!! 删了就可以在mybatis-config中使用<font color="red">${mysql.driver}</font>了。。
/*mysql.driver = com.mysql.cj.jdbc.Driver;*/
//mysql.driver = com.mysql.cj.jdbc.Driver
mysql.url = jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&characterEncoding=utf8&Unicode=true&useSSL=false
mysql.username=root
mysql.password=root

猜你喜欢

转载自blog.csdn.net/qq_24484317/article/details/127263120