Mybatis从创建到获取Mapper的源码分析

mybatis从SqlSessionFactoryBuilder构建SqlSessionFactory,再通过SqlSessionFactory获取SqlSession,再获取Mapper对象过程。

Mybatis从创建到获取Mapper的源码分析

 

 1.获取传入的xml文件

Mybatis从创建到获取Mapper的源码分析

  • 先调Resources的getResourceAsStream方法,传入mybatis-config.xml文件
  • 然后调用getResuorceAsStream(ClassLoader loader,String resource)方法
  • 这个方法里面再调用classLoaderWrapper中的getResourceAsStream(String resource, ClassLoader classLoader)方法
  • 方法里面再调用了本类中的getResourceAsStream(String resource, ClassLoader[ ] classLoader)方法

 

2.获取SqlSessionFactory对象

Mybatis从创建到获取Mapper的源码分析

  • 创建SqlSessionFactoryBuilder对象
  • 调用本类带三个参数的重载的build(InputStream inputStream, String environment, Properties properties)方法。
  • 通过Xpath解析的方式去解析mybatis-config.xml 文件将配置文件的信息解析并保存在Configuration对象中

3.获取SqlSession对象

Mybatis从创建到获取Mapper的源码分析

  • 先调用openSession()方法
  • 再调用openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit)方法
  • 创建事务tx,通过environment构建出transactionFactory事务工厂
  • newExecutor(),根据Executor在全局配置中的类型,创建出对应的执行器
  • 通过Executor、事务自动提交以及配置文件对象(Configuration)返回 DefaultSqlSession对象

 

4.获取mapper

Mybatis从创建到获取Mapper的源码分析

 Mybatis从创建到获取Mapper的源码分析