2026/3/13 14:59:40
网站建设
项目流程
重庆潼南网站建设公司,wordpress acg风格,快闪ppt模板免费下载,表情包制作网页3 MyBatis 测试流程与核心原理解析
3.1 测试类整体结构 该UserTest类是基于 JUnit 框架的 MyBatis 测试类#xff0c;主要包含四部分#xff1a;成员变量#xff1a;存储关键对象#xff08;输入流、数据库会话、接口代理#xff09;。Before 方法#xff08;init#…3 MyBatis 测试流程与核心原理解析3.1 测试类整体结构该UserTest类是基于 JUnit 框架的 MyBatis 测试类主要包含四部分成员变量存储关键对象输入流、数据库会话、接口代理。Before 方法init测试前初始化资源构建 MyBatis 运行环境。在每个Test方法执行前自动调用用于初始化资源如加载配置文件、创建数据库连接。After 方法destory测试后释放资源避免内存泄漏。在每个Test方法执行后自动调用用于释放资源如关闭连接、流。Test方法调用接口方法并验证结果。UserTest 类就像一个 “测试实验室”专门用来验证你的代码能不能正确从数据库里查数据。比如你写了个 “查用户” 的功能得在这里试试好不好用。3.1.1 成员变量详解成员变量private InputStream in null; // 配置文件输入流 private SqlSession session null; // MyBatis数据库会话 private UserDao userDao null; // 数据访问接口代理对象作用in读取SqlMapConfig.xml配置文件。session执行 SQL、管理事务的核心对象。userDao通过代理调用UserDao接口的方法映射 XML 中的 SQL。3.1.2 Before 方法Before 方法初始化 MyBatis 环境Before //前置通知, 在方法执行之前执行 public void init() throws IOException { //1. 找配置文件 //加载主配置文件目的是为了构建SqlSessionFactory对象 in Resources.getResourceAsStream(SqlMapConfig.xml); //2. 造一个数据库连接器工厂 //创建SqlSessionFactory对象 SqlSessionFactory factory new SqlSessionFactoryBuilder().build(in); //3. 用工厂造一个数据库连接器 //通过SqlSessionFactory工厂对象创建SqlSesssion对象 session factory.openSession(); // 4. 造一个查数据的工具 //通过Session创建UserDao接口代理对象 userDao session.getMapper(UserDao.class); }加载配置文件Resources.getResourceAsStream(SqlMapConfig.xml)从类路径src/main/resources读取 MyBatis 全局配置文件转换为输入流。注意文件需位于resources目录下且文件名必须与参数一致如SqlMapConfig.xml。白话先找到 MyBatis 的 “使用说明书”SqlMapConfig.xml里面写着怎么连数据库、去哪找 SQL 语句。创建 SqlSessionFactorySqlSessionFactoryBuilder构建器类通过build(InputStream)方法解析配置文件生成SqlSessionFactory。SqlSessionFactory工厂类用于创建SqlSession数据库会话是线程安全的建议在项目中作为单例存在。白话根据说明书造一个 “连接器工厂”专门生产连数据库的工具。获取 SqlSessionfactory.openSession()创建数据库会话默认autoCommitfalse手动提交事务。白话用工厂生产一个 “数据库连接器”session相当于拿到了操作数据库的钥匙。注如果增删改操作后数据库没变化需要在测试方法里加 session.commit()因为MyBatis 默认不自动保存。如果查不到数据可能是 SQL 语句写错了或者数据库连接信息账号密码不对也可能是表名和实体类名对不上。生成接口代理session.getMapper(UserDao.class)通过动态代理生成UserDao接口的实现类对象。本质该对象会将接口方法调用转换为 XML 中对应的 SQL 执行如userDao.findAll()对应UserMapper.xml中的。白话再用连接器造一个 “查数据的工具”userDao这个工具能帮你执行 SQL 语句。3.1.3 After 方法After public void destory() { if (session ! null) session.close(); if (in ! null) in.close(); }用完数据库连接器和说明书后要记得 “关门”关闭连接和文件不然会浪费资源就像用完水龙头不关会漏水一样。3.1.4 Test 方法Test 注解替代 main 方法在 JUnit 测试中Test注解标识的方法如aaa()会被测试框架自动执行相当于程序的入口无需手动编写main方法。若去掉Test方法无法被执行添加后框架会调用该方法进行测试。Test public void aaa() { // 用工具查所有用户 ListUser users userDao.findAll(); // 把查到的用户打印出来看看 for (User user : users) { System.out.println(user); } }白话用 “查数据的工具” 喊一声 “给我查所有用户”userDao.findAll()。工具会偷偷找到说明书里写的 SQL 语句比如 select * from user去数据库把数据查出来。把查到的用户数据存到一个篮子里List然后逐个打印出来看看是不是你想要的结果。3.2 核心概念MyBatis 的定义MyBatis 是一款基于 Java 的持久层框架通过 ORM对象关系映射机制 将数据库操作与 Java 代码解耦。它允许开发者通过 XML 或注解配置 SQL 语句避免直接编写繁琐的 JDBC 原生代码实现 Java 对象与数据库表的映射关系提升数据访问的开发效率。白话帮你省力气的 “数据库翻译官”不用写复杂的连接代码直接用 Java 方法调 SQL 语句。配置文件SqlMapConfig.xml的作用位置src/main/resources作用作为 MyBatis 的全局配置文件包含数据库连接池配置驱动、URL、用户名、密码和映射文件注册mappers标签。白话MyBatis 的 “使用说明书”写着数据库账号密码、SQL 语句在哪找等重要信息。UserDao 接口的定位UserDao 是遵循 DAO数据访问对象模式 定义的接口用于封装用户相关的数据操作。其方法如 findAll()通过 MyBatis 的动态代理机制与映射文件中定义的 SQL 语句绑定。当调用接口方法时MyBatis 会将其转换为对应的 SQL 执行并将结果映射为 Java 对象如 User 实体返回实现 “接口方法到 SQL 语句” 的自动化转换。白话定义的 “查数据接口”比如 findAll() 就是 “查所有用户” 的命令MyBatis 会把它翻译成 SQL 去执行。JUnit 测试的机制JUnit 是 Java 单元测试框架通过注解实现测试流程的自动化管理Before标注的方法在每个测试用例执行前自动调用用于初始化资源如加载 MyBatis 配置、创建数据库会话Test标注具体的测试方法如 aaa()用于验证业务逻辑如查询用户列表After标注的方法在测试用例执行后调用用于释放资源如关闭数据库连接、输入流避免资源泄漏。整个流程遵循 “准备资源 → 执行测试 → 清理资源” 的生命周期管理模式确保测试的可靠性和可重复性。白话自动运行测试的 “机器人”Before 是测试前的准备Test 是真正的测试任务After 是测试后的打扫。