【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,但是殊途同归,都是一样的。我们的示例大概的一个执行就是:

  1. 先获取配置文件的 io
  2. 创建配置文件的构建器 XMLConfigBuilder
  3. 解析配置文件生成 Configuration
  4. 根据 Configuration 创建我们的 SqlSessionFactory
  5. 获取会话执行 sql

好,那么我们串联一下整体经过的主要类的情况。

 针对 mapper 的一个过程:

3  小结

简单画了画解析过程中涉及到的一些类,辅助理解,有理解不对的地方,欢迎指正哈,

posted @ 2023-03-01 08:44  酷酷-  阅读(11)  评论(0编辑  收藏  举报