请先了上一篇

在mybatis框架中使用了大量的设计模式,并且策略模式也是使用的非常之多,下面类介绍一种场景。

myBatis配置文件mybatis-config.xml中的节点settings中有一项配置如下:

<setting name="defaultExecutorType" value="SIMPLE" />

配置的是MyBatis在运行过程中默认的执行器Executor,此项配置的默认值就是SIMPLE,指向就是接口Executor的实现类SimpleExecutor。

通过查看源码可以看得到接口Executor的继承关系如下: 

策略模式 --MyBatis源码中的应用之一_事务隔离级别

这些实现类为接口Executor的策略簇,实现了不同的执行器策略:

  • SimpleExecutor:普通的执行器
  • BatchExecutor:批处理执行器
  • ReuseExecutor:预处理语句重用执行器

 XMLConfigBuilder中,对xml配置的进行解析

策略模式 --MyBatis源码中的应用之一_事务隔离级别_02

这里的configuration是BaseBuilder中的

策略模式 --MyBatis源码中的应用之一_事务隔离级别_03

MyBatis核心类 Configuration类是根据传入的策略对象类型,生产相应的策略对象,代码如下:

策略模式 --MyBatis源码中的应用之一_xml_04

策略模式 --MyBatis源码中的应用之一_对象类型_05

configuration的使用在DefaultSqlSessionFactory中

策略模式 --MyBatis源码中的应用之一_事务隔离级别_06

策略模式 --MyBatis源码中的应用之一_对象类型_07

指定执行器类型,事务隔离级别和事务是否自动提交,从数据源中生成SqlSession。

大致步骤:

  • xml中配置执行器类型
  • 生成对应的执行器
  • 根据执行器生成DefaultSqlSession