SqlSession执行流程

一、产生

Mybatis解析完配置文件后,会生成一个DefaultSqlSessionFactory对象,调用openSession方法,即可获得一个SqlSession(使用的是默认的DefaultSqlSession对象)。

二、源码解读

 SqlSession执行流程

 SqlSession执行流程

  1. 获取到环境对象
  2. 获取到事务工厂
  3. 实例化事务对象
  4. 创建执行器对象
  5. 创建DefaultSqlSession对象

三、sqlSession作用

调用getMapper()方法,生成代理对象。

 SqlSession执行流程

 SqlSession执行流程

 SqlSession执行流程

使用JDK动态代理,调用mapperProxyFactory.newInstance()。

 SqlSession执行流程

MapperProxyFactory是为了给Mapper接口生成代理类,其中关键的拦截逻辑在MapperProxy中的invoke方法。

 SqlSession执行流程

MapperProxy中调用了MapperMethod的execute方法。

SqlSession执行流程

执行对应的sql语句(使用JDBC进行数据库查询)。

 SqlSession执行流程

 SqlSession执行流程

在用JDBC调用数据库查询之前,首先会查询一级缓存,如果一级缓存中有,则取一级缓存中的数据,如果没有,则调用JDBC进行数据库查询。

 SqlSession执行流程

SqlSession执行流程

 SqlSession执行流程