一、产生
Mybatis解析完配置文件后,会生成一个DefaultSqlSessionFactory对象,调用openSession方法,即可获得一个SqlSession(使用的是默认的DefaultSqlSession对象)。
二、源码解读
- 获取到环境对象
- 获取到事务工厂
- 实例化事务对象
- 创建执行器对象
- 创建DefaultSqlSession对象
三、sqlSession作用
调用getMapper()方法,生成代理对象。
使用JDK动态代理,调用mapperProxyFactory.newInstance()。
MapperProxyFactory是为了给Mapper接口生成代理类,其中关键的拦截逻辑在MapperProxy中的invoke方法。
MapperProxy中调用了MapperMethod的execute方法。
执行对应的sql语句(使用JDBC进行数据库查询)。
在用JDBC调用数据库查询之前,首先会查询一级缓存,如果一级缓存中有,则取一级缓存中的数据,如果没有,则调用JDBC进行数据库查询。