Mybatis的SqlSession创建过程详解

本文详细解析了Mybatis中SqlSession的创建过程,包括SqlSessionFactory的DefaultSqlSessionFactory如何创建SqlSession,涉及事务创建、执行器创建等步骤。在创建过程中,首先根据configuration获取Environment,然后通过事务工厂创建事务对象,接着创建执行器对象,最后创建DefaultSqlSession。事务创建使用JdbcTransaction,数据源可能是PooledDataSource或UnpooledDataSource。执行器创建则涉及到CachingExecutor对其他Executor的包装。SqlSession内部包含configuration和executor,executor中包含configuration和transaction,transaction包含了数据源DataSource。
摘要由CSDN通过智能技术生成

前面mybatis的初始化过程分析完成,接下来是第二步SqlSession的创建。

创建过程总览

SqlSession创建过程如下图:
1SqlSession创建过程.png

创建过程还是比较简单的,首先是之前分析的SqlSessionFactory,在mybatis中提供了两个SqlSessionFactory实现:SqlSessionManager和DefaultSqlSessionFactory,通过前面的分析知道默认返回的是DefaultSqlSessionFactory,至于SqlSessionManager后面再说吧。

DefaultSqlSessionFactory为创建SqlSession对象重载了多个方法,除了默认的无参方法,还可以指定自动提交、事务隔离级别以及指定的执行器类型。执行器类型是一个枚举对应mybatis提供的三种执行器类型:SIMPLE, REUSE, BATCH。

这里从无参方法入手,可以看到最终传递了三个默认参数:默认的执行器类型(在configuration中默认是SIMPLE),默认隔离级别,非自动提交。接下来就是具体创建SqlSession的过程了,主要做了三件事情:

1、根据configuration获取environment,然后获取事务工厂,也就是在mybatis-config中配置的事务工厂;

2、通过事务工厂根配置文件中的据数据源、事务隔离等级、是否自动提交创建事务对象;

3、根据事务对象和执行器类型创建执行器对象;

4、创

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值