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