天天看点

MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理

MyBatis详细执行流程

步骤总结:

1、Resources加载全局配置文件

2、实例化SqlSessionFactoryBuilder工程构建器

3、由XMLConfigBulider解析配置文件流

4、把配置信息存放在Configuration中

5、实例化SqlSessionFactory实现类DefaultSqlSessionFactory

6、由TransactionFactory创建一个Transaction事务对象

7、创建Excutor执行器

8、创建SqlSession接口实现类DefaultSqlSession

9、实现CURD若执行成功,则事务提交(注:查询操作不用提交事务),否则因失败而回滚到第6步

10、关闭

1、Resources加载全局配置文件

MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理

2、实例化SqlSessionFactoryBuilder工程构建器

MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理

3、由XMLConfigBulider解析配置文件流

MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理

4、把配置信息存放在Configuration中

MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理

通过 Debug 也可以看出 Configuration 中包含了许多的配置信息

MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理

5、实例化SqlSessionFactory实现类DefaultSqlSessionFactory

MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理

6、由TransactionFactory创建一个Transaction事务对象

MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理
MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理

7、创建Excutor执行器

MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理

8、创建SqlSession接口实现类DefaultSqlSession

根据 Debug 测试可寻根溯源

MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理
MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理
MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理
MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理

成功找到SqlSession接口的实现类DefaultSqlSession的实例化代码段

MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理

9、实现CURD若执行成功,则事务提交(注:查询操作不用提交事务),否则因失败而回滚到第6步

当然,也可以在获取SqlSession时配置事务自动提交,则增删改操作也不再需要提交事务

MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理

这是由于此方法是个重载方法

MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理

10、关闭

未使用自动提交事务的重载方法

MyBatis知识汇总(第七篇)【图文】关于执行流程的源码分析+底层原理