Mybatis源码解析
一、mybatis 流程三个阶段
1、初始化阶段:读取XML 配置文件和注解中的配置信息,创建配置对象,并完成各个模块的初始工作;
2、代理阶段:封装 IBatis 编程模型,使用 mapper 接口开发的初始化工作;
3、数据处理阶段:通过 SqlSession 完成SQL解析,参数的映射、SQL的执行、结果的反射解析过程;
二、简化版 Mybatis 实现思路
1、初始化阶段:读取XML 配置文件和注解中的配置信息,创建配置对象,并完成各个模块的初始工作;
1、创建 SqlSessionFactory 实例
2、实例化过程中加载配置文件创建 Configuration 对象
3、通过 factory 创建 SqlSession
2、代理阶段:封装 IBatis 编程模型,使用 mapper 接口开发的初始化工作;
4、通过 Sql Session 获取 mapper 结果动态代理
5、动态代理回调 sqlsession 某个具体方法
6、Sql Session 将执行方法转发给 Executor
3、数据处理阶段:通过 SqlSession 完成SQL解析,参数的映射、SQL的执行、结果的反射解析过程;
7、Executor 基于 jdbc 访问数据库获取数据
8、Executor 通过反射将数据转成 pojo 返回给 Sql Session
9、将数据返回给调用者;