目录
[1. 📦MyBatis核心对象及工作流程](#1. 📦MyBatis核心对象及工作流程)
[1.1. 🎯MyBatis 4个核心对象](#1.1. 🎯MyBatis 4个核心对象)
[1.2. 🕹️MABatis工作流程](#1.2. 🕹️MABatis工作流程)
[2. 📝使用SqlSession操作数据库初体验](#2. 📝使用SqlSession操作数据库初体验)
[2.1. 读取核心配置文件](#2.1. 读取核心配置文件)
[2.2. 创建SqlSessionFactoryBuilder对象](#2.2. 创建SqlSessionFactoryBuilder对象)
[2.3. 使用SqlSessionFactoryBuilder获取SqlSessionFactory对象](#2.3. 使用SqlSessionFactoryBuilder获取SqlSessionFactory对象)
[2.4. SqlSessionFactory对象获取SqlSession对象](#2.4. SqlSessionFactory对象获取SqlSession对象)
[2.5. 使用SqlSession直接操作数据库](#2.5. 使用SqlSession直接操作数据库)
[2.6. 关闭资源](#2.6. 关闭资源)
[3. ✨总结](#3. ✨总结)
💡【开发哲学共勉】
像 MyBatis 拆分 Builder/Factory/Session 一样,把大问题拆成只做一件事的小模块
🎉 前言
本节来讲解一下MyBatis核心对象和工作流程及使用SQLSession来操作数据库,旨在帮助大家更好的理解和掌握相关的知识(๑•̀ㅂ•́)و✧
个人主页:艺杯羹 🌿
系列专栏:MyBatis🚀
1. 📦MyBatis核心对象及工作流程
先看流程图,看完下面的讲解内容,再回过来看,就豁然开朗了(๑•̀ㅂ•́)و✧
1.1. 🎯MyBatis 4个核心对象
- 
SqlSessionFactoryBuilder 可以理解成一个工厂的建造者,可以来创建工厂 --- SqlSessionFactory 
- 
SqlSessionFactory 可以理解成一个工厂,可以来生产SqlSession对象 
- 
SqlSession - 
可以操作数据库 
- 
也可以创造Mapper代理对象操作数据库 
 
- 
- 
Mapper 持久层接口的代理对象,实现持久层接口,来操作数据库 
| 对象名称 | 理解类比 | 核心功能描述 | 
|---|---|---|
| SqlSessionFactoryBuilder | 工厂建造者 | 负责创建 SqlSessionFactory工厂,如同建筑师按图纸搭建工厂框架,仅在初始化时使用一次 | 
| SqlSessionFactory | 数据库会话工厂 | 作为生产 SqlSession的工厂,统一管理数据库连接配置,以单例模式存在,贯穿项目生命周期 | 
| SqlSession | 数据库操作会话 | 直接执行 SQL 语句操作数据库,可管理事务;也能创建 Mapper 代理对象,是与数据库交互的核心接口 | 
| Mapper | 持久层接口代理对象 | 实现持久层接口的动态代理,将接口方法映射为 SQL 操作,无需手写 SQL 即可完成数据库交互 | 
它的工作流程也和上面介绍的这个顺序是一样的
1.2. 🕹️MABatis工作流程
- 
创建 SqlSessionFactoryBuilder 对象(创建工程的建造者) 
- 
SqlSessionFactoryBuilder 对象创建SqlSessionFactory (建造工程,成为建造者模式) 
- 
SqlSessionFactory 对象生产了 SqlSession 对象:工厂模式 
- 
SqlSession 对象创建了持久层接口的代理对象:动态代理模式 
- 
代理对象 Mapper操作数据库 
现在可以回过去看看,工作的流程图,就能看懂了
2. 📝使用SqlSession操作数据库初体验
上面提到了可以使用代理对象Mapper获取对象,也可以SqlSession来获取对象,这种用的比较少那么先来看看SqlSession是如何获取对象的
2.1. 读取核心配置文件
            
            
              java
              
              
            
          
          InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");2.2. 创建SqlSessionFactoryBuilder对象
            
            
              java
              
              
            
          
          SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();2.3. 使用SqlSessionFactoryBuilder获取SqlSessionFactory对象
            
            
              java
              
              
            
          
          SqlSessionFactory factory = builder.build(is);2.4. SqlSessionFactory对象获取SqlSession对象
            
            
              java
              
              
            
          
          SqlSession session = factory.openSession();2.5. 使用SqlSession直接操作数据库
            
            
              java
              
              
            
          
          List<User> users = session.selectList("com.yibeigen.mapper.UserMapper.findAll");
// 输出
users.forEach(System.out::println);2.6. 关闭资源
            
            
              java
              
              
            
          
          session.close();
is.close();完整代码
            
            
              java
              
              
            
          
          @Test
public void testFindAll2() throws Exception {
  // (1)读取核心配置文件
  InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
  // (2)创建SqlSessionFactoryBuilder对象
  SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
  // (3)SqlSessionFactoryBuilder对象获取SqlSessionFactory对象
  SqlSessionFactory factory = builder.build(is);
  // (4)SqlSessionFactory对象获取SqlSession对象
  SqlSession session = factory.openSession();
  // (5)SqlSession直接操作数据库
  List<User> users = session.selectList("com.yibeigen.mapper.UserMapper.findAll");
  users.forEach(System.out::println);
  // (6)关闭资源
  session.close();
  is.close();
}
3. ✨总结

MyBatis核心对象和工作流程及sqlsession讲解就到此结束了,希望对你有所帮助😊
