当前位置: 首页 > 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配置文件中的${}符知道该去哪找。

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

http://www.dtcms.com/a/83426.html

相关文章:

  • 六十天前端强化训练之第二十六天之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创建表语句
  • Java并发编程(1)
  • 【指针(2)-- 使用指针的技巧】
  • BBR 和 CUBIC 对长肥管道的不同反应
  • 使用请求调用本地部署的stable-diffusion接口
  • 从零开始实现 C++ TinyWebServer 处理请求 HttpRequest类详解
  • 3D引擎:Three.js有什么有什么优缺点?
  • 数据人的进阶之路:四年数仓实践与成长思考
  • Elasticsearch + Docker:实现容器化部署指南
  • SpringBoot3使用CompletableFuture时java.util.ConcurrentModificationException异常解决方案
  • 优先级与环境变量的艺术:驾驭 Linux 系统的核心