前面mybatis的初始化过程分析完成,接下来是第二步SqlSession的创建。
创建过程总览
SqlSession创建过程如下图:
创建过程还是比较简单的,首先是之前分析的SqlSessionFactory,在mybatis中提供了两个SqlSessionFactory实现:SqlSessionManager和DefaultSqlSessionFactory,通过前面的分析知道默认返回的是DefaultSqlSessionFactory,至于SqlSessionManager后面再说吧。
DefaultSqlSessionFactory为创建SqlSession对象重载了多个方法,除了默认的无参方法,还可以指定自动提交、事务隔离级别以及指定的执行器类型。执行器类型是一个枚举对应mybatis提供的三种执行器类型:SIMPLE, REUSE, BATCH。
这里从无参方法入手,可以看到最终传递了三个默认参数:默认的执行器类型(在configuration中默认是SIMPLE),默认隔离级别,非自动提交。接下来就是具体创建SqlSession的过程了,主要做了三件事情:
1、根据configuration获取environment,然后获取事务工厂,也就是在mybatis-config中配置的事务工厂;
2、通过事务工厂根配置文件中的据数据源、事务隔离等级、是否自动提交创建事务对象;
3、根据事务对象和执行器类型创建执行器对象;
4、创