【Mybatis】【配置文件解析】【五】Mybatis源码解析-总结
1 前言
我们大概花了7篇文章讲解了配置解析的东西,其中花了4篇是在 mappers 的解析,内容比较多,涉及的类也比较多,所以我们这节来根据类做个总结,什么阶段用的哪个类进行了什么样的处理。
2 配置文件解析的过程
首先我们要清楚一点,我们最终是要得到SqlSessionFactory,因为有了它我们就能获取会话,执行我们的 sql,是不是。那么我们解析这些配置文件最终是要干什么,其实就是解析配置构建出配置类 Configuration,有了它就可以通过 SqlSessionFactoryBuilder 创建出我们的 SqlSessionFactory。
我们拿下边的这个例子作为入口,串联一下解析过程中的类。
@SneakyThrows public static void main(String[] args) throws IOException { // 配置文件创建 io InputStream reader = Resources.getResourceAsStream("config.xml"); // 创建配置文件构建器 XMLConfigBuilder builder = new XMLConfigBuilder(reader, null, null); // 解析我们的配置文件生成 configuration 对象 Configuration configuration = builder.parse(); // 根据 configuration 创建我们的 SqlSessionFactory (sqlSession工厂) SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration); // 有了工厂我们就可以拿会话了,会话可以看作就是连接,有了连接我们就能执行 sql SqlSession sqlSession = sqlSessionFactory.openSession(); // 获取我们的 mapper接口类 OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class); // 执行 OrderPo one = orderMapper.insertOne(1L, ""); System.out.println(one); }
这个示例代码比较简单,我们当然也可以直接把第一行的 io 流给到 SqlSessionFactoryBuilder,但是殊途同归,都是一样的。我们的示例大概的一个执行就是:
- 先获取配置文件的 io
- 创建配置文件的构建器 XMLConfigBuilder
- 解析配置文件生成 Configuration
- 根据 Configuration 创建我们的 SqlSessionFactory
- 获取会话执行 sql
好,那么我们串联一下整体经过的主要类的情况。
针对 mapper 的一个过程:
3 小结
简单画了画解析过程中涉及到的一些类,辅助理解,有理解不对的地方,欢迎指正哈,