转载

MyBatis源码分析篇---会话工厂SqlSessionFactory

  • 现在我们可以看下在 new Configuration 的时候做了什么操作;
  • 我们可以从下面的代码截图中看出,其实,他只是做了部分别名的存储;
  • MyBatis源码分析篇---会话工厂SqlSessionFactory

5.3 XMLConfigBuilder#parse

  • 当我们再 SqlSessionFactoryBuilderbuild 方法中获取到了 XMLConfigBuilder 之后,调用了其 parse() 方法;
  • 而我们看到 parse() 方法中调用了 parseConfiguration(XNode root) 这个方法才是真正执行 mybatis 全局配置文件解析的方法。
  • MyBatis源码分析篇---会话工厂SqlSessionFactory
  • parseConfiguration(XNode root) 方法中解析了 <properties> 、配置节点 <settings> 、别名配置节点 <typeAliases> 、插件扩展 <plugins> 、对象工厂节点 <objectFactory> 、环境配置节点 <environments> 、类型处理器节点 <typeHandlers> 、映射器节点 <mappers> 等;
  • parse() 执行配置文件解析后将配置信息保存至 Configuration 对象中。
  • 其中相对而言最需要我们关注的是: org.apache.ibatis.builder.xml.XMLConfigBuilder#mapperElement 方法,初始化了 MappedStatement 对象,其中保存了映射文件等 SQL 执行所需的必要信息;可参考上一篇博文:初始化解析配置文件
  • 代码运行时序图
MyBatis源码分析篇---会话工厂SqlSessionFactory

至此:已经获取到了会话工厂类实例 SqlSessionFactory ,我们可以从会话工厂中获取session会话,从而操作数据库

结语

​ 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的,我们获取到了会话工厂类,就相当于拿到了制作操作数据库钥匙的机器,而我们现在只需要拿着这个机器去制造钥匙,然后去打开 MyBatis 操作数据库的大门。

原文  https://juejin.im/post/5ea05449e51d454711412c22
正文到此结束
Loading...