当前位置: 首页 > news >正文

mybatis操作数据库报错Cause: Cannot find class: ${com.mysql.cj.jdbc.Driver}

首先导入mybatis核心依赖

<dependency>
     <groupId>org.mybatis</groupId>
     <artifactId>mybatis</artifactId>
     <version>3.5.9</version>
</dependency>

配置mybatis核心配置文件

<?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://localhost:3306/mybatis}"/>
                <property name="username" value="${root}"/>
                <property name="password" value="${root}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <package name="com.su.mapper"/>
    </mappers>
</configuration>

编写测试类

public class MybatisTest {
    public static void main(String[] args) throws IOException {
        //读取配置文件
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
        //创建 sqlSessionFactory 对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //构造器读取配置文件创建工厂
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(in);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //获取操作数据库的mapper对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //操作数据库
        List<User> userList = mapper.findAll();
        userList.forEach(user -> System.out.println(user));
        System.out.println("over...");
    }
}

从数据库中查询所有用户,此时报错
在这里插入图片描述

解决方案

是由于mybatis核心配置文件的数据库配置写错。

properties有三种配置方法

第一种:直接将数据库信息写死在核心配置文件中

 <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url"
                          value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

将全部内容写到dataSource中,这样能够运行成功

第二种:文件内引用使用properties标签

<properties>
    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
</properties>

然后在dataSource里写,就能直接通过${}引用properties里的值了

<dataSource type="POOLED">
    <property name="driver" value="${driver}"/>
    <property name="url" value="${url}"/>
    <property name="username" value="${username}"/>
    <property name="password" value="${password}"/>
</dataSource>

第三种:文件外引用

写一个 jdbc.properties 专门配置数据库连接,把连接数据库的内容放到外面,然后通过引入的方式加入到Mybatis配置文件中,与核心配置文件解耦。

这行代码表示引入的资源文件的相对位置

    <properties resource="./jdbc.properties"/>
   
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${mysql.driver}"/>
                <property name="url"
                          value="${mysql.url}"/>
                <property name="username" value="${mysql.username}"/>
                <property name="password" value="${mysql.password}"/>
            </dataSource>
        </environment>
    </environments>

添加后,表示让Mybatis配置文件中的${}符知道该去哪找。

所以问题在于${} 使用错误。

相关文章:

  • 六十天前端强化训练之第二十六天之Vue Router 动态路由参数大师级详解
  • Qt下集成大华网络相机SDK示例开发
  • 大数据学习(76)-Impala计算引擎
  • 【Json-RPC框架】:Json存储结构,operator[ ]返回的就是对应的value对象
  • 根据MAC地址获取设备厂商
  • SOFABoot-06-健康检查
  • 7 合并两个有序列表
  • MediaPipe软件包如何构建和安装
  • Vue中组件和插件有什么区别?
  • Android 根据Url使用Retrofit框架进行文件下载
  • 数字内容体验优化用户参与路径
  • AI比人脑更强,因为被植入思维模型【15】马斯洛需求层次理论
  • 使用Python开发自动驾驶技术:车道线检测模型
  • Java的流程控制
  • 机器学习与数据分析相关数学基础知识总结
  • Redis 内存管理
  • Java中的多态
  • Java IO性能优化:字节流与缓冲流的对比与实战分析
  • Cache与虚拟存储:计算机系统中的“快取侠”与“空间魔术师”
  • 导出tdengine创建表语句
  • 技术派|伊朗展示新型弹道导弹,美“萨德”系统真的拦不住?
  • 深入贯彻中央八项规定精神学习教育中央第六指导组指导督导中国工商银行见面会召开
  • 央行:全力推进一揽子金融政策加快落地
  • 外交部回应西班牙未来外交战略:愿与之一道继续深化开放合作
  • 中邮保险斥资8.69亿元举牌东航物流,持股比例达5%
  • 《中国医药指南》就“宫颈癌等论文出现男性病例”致歉:辞退涉事编辑