# 创建SqlSessionFactory
# 加载Mybatis XML文件
# 加载Mapper XML文件
三种加载方式
1、resource
2、url
3、Class
# 所有xml配置文件存放在configuration对象中
# 创建 Executor执行者
Exexutor接口是主要的执行者,其中定义了各种方法:
select,update,commit,rollback等
# 返回一个defaultSqlSessionFactory(configuration,executor)
# 到此处,一个SqlSessionFactory对象构建完成
# GetMapper
# MapperProxyFactory
通过JDK Proxy 代理生成mapper代理对象
# Executor 调用接口
接口会转去调用mapperProxy的invoke实现
- 一级缓存:sqlSession(在invoke方法中)LocalCache
- 二级缓存:sqlSessionFactory,TranslationCacheManager
- 自己配置,如ehcache
- 默认
- 三级缓存:配置
先查询二级缓存,查询不到在查询一级缓存。
# MapperMthod
SqlCommand:CURD判断
判断返回类型
判断注解
通过 Prefix=(param+(count))进行参数替换
# mapperStatement
保存全部结果到ms(mapperStatement)中
executor.query(ms)
# createCacheKey 创建缓存Key
根据hash值计算
然后生成缓存
# doQuery
创建连接,开始查询
# 根据缓存情况返回结果
同一个SqlSessionFactory创建的缓存一直存在。
# 关闭连接
把TranslationCache中的缓存提交

Mybatis 基于XML配置的源码分析(未完善)