【Mybatis 源码】openSession获取sqlSession

∥☆過路亽.° 提交于 2020-11-30 12:05:19

这一节 我们看defaultSqlSessionFactory对象的openSession()方法的具体过程

在这里插入图片描述

在这里插入图片描述
调用的方法是openSessionFromDataSource()方法
在这里插入图片描述
首先从configuration中拿到默认的Executor类型


this.configuration.getDefaultExecutorType()

流程图

在这里插入图片描述
在这里插入图片描述

openSessionFromDataSource

openSessionFromDataSource方法先是获取了一些信息,然后创建了一个Executor
在这里插入图片描述

Executor的创建

openSessionFromDataSource方法通过这一句创建Executor

 Executor executor = this.configuration.newExecutor(tx, execType);

newExecutor方法:

  1. 根据Executor在全局配置的类型(SIMPLE/REUSE/BATCH) 创建相应的Executor
  2. 如果有二级缓存则包装executor,但实际执行增删改查的还是包装之前的executor
  3. 用每一个拦截器重新包装executor并返回

在这里插入图片描述

Executor

Executor是一个接口,用来做增删改查的
在这里插入图片描述

获取DefaultSqlSession对象

得到executor后,通过下面这一句new一个DefaultSqlSession对象 返回。
DefaultSqlSession中包含了配置信息以及executor

var8 = new DefaultSqlSession(this.configuration, executor, autoCommit);

DefaultSqlSession是SqlSession的实现类,
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!