-----加载配置文件阶段
1.加载主配置文件(带有 Configuration标签的配置文件)
2.解析配置文件中的参数设置给对应的属性
3.解析mapper映射文件,并将每一个增删改查的标签都解析成一个MappedStatement对象,并存储到Configutation对象中
-----创建sqlSession阶段
1.根据配置的ExecutorType来决定使用哪种Executor,如果开启了二级缓存则再使用 CacheExecutor包装一下。
BatchExecutor 批量执行器
SimpleExecutor简单执行器
ReuseExecutor重复执行器
2.创建Executor的时候会调用插件拦截器的plugin方法,这时候可以创建Executor的代理对象
3.创建DefaultSqlSession对象,并持有Configuration 和 Executor对象,以及 是否自动提交
-----执行查询sql阶段
1.根据查询的标签id 获取到对应的 MappedStatement对象。
2.先从二级缓存中查找,查找到直接返回,没有查找到则调用真正的Executor来执行
3.再从一级缓存中查找,找到后如果执行器类型为ExecutorType.CALLABLE则进行处理并返回
4.如果没找到则创建StatementHandle对象(同时创建ParameterHandler和ResultSetHandler),并分别调用插件拦截器的plugin方法(有机会创建对应Handler的代理对象)
5.通过ParameterHandler执行sql的预编译
6.执行sql,并通过ResutlSetHandler对结果进行封装