程序入口为openSession,会调用openSessionFromDataSource()方法创建sqlSession

MyBatis 源码分析笔记01 构建mapper_sql


一、创建sqlSession

1. 从configuration中获取environment

2. 然后根据环境environment获取transactionFactory

3.调用事务工厂创建事务tx

4. 调用configuration创建新的executor


MyBatis 源码分析笔记01 构建mapper_缓存_02

5.根据执行类型executorType进行判断,如果是batch批量类型,就创建BatchExecutor

如果是reuse类型,就创建ReuseExecutor。其余情况,创建SimpleExecutor

如果配置了缓存,就使用缓存的CachingExecutor,实现了Mybatis的二级缓存

调用MapperRegistry获取mapper


MyBatis 源码分析笔记01 构建mapper_二级缓存_03

通过MapperProxyFactory创建一个newInstance,也就是一个mapper实例

Mybatis用JDK的动态代理为mapper创建代理对象,到这里,mapper的创建就完成了