MybatisSqlSession案例详解 |
||||||||||||
+ 目录
前言老规矩,先上案例代码,我们按照这个案例一步一步的搞定Mybatis源码。
?
前面我们已经讲了Mybatis是如何解析相关配置文件的,如果怕迷路,还是建议先看前一篇文章: 继续开撸~~
?
前面那篇文章已经分析了,这里的sqlSessionFactory其实就是DefaultSqlSessionFactory。 所以这里,我们就从DefaultSqlSessionFactory里的openSession方法开始。
?
这个方法中的主要内容有:
下面我们就来逐个攻破。
创建事务Transaction事务工厂类型可以配置为JDBC类型或者MANAGED类型。
JdbcTransactionFactory生产JdbcTransaction。 ManagedTransactionFactory生产ManagedTransaction。 如果配置的JDBC,则会使用Connection对象的commit()、rollback()、close()方法来管理事务。 如果我们配置的是MANAGED,会把事务交给容器来管理,比如JBOSS,Weblogic。因为我们是本地跑的程序,如果配置成MANAGED就会不有任何事务。 但是,如果我们项目中是Spring集成Mybatis,则没有必要配置事务,因为我们会直接在applicationContext.xml里配置数据源和事务管理器,从而覆盖Mybatis的配置。
创建执行器Executor 调用configuration的
?
此方法分三个步骤。 第一步:创建执行器 Executor的基本类型有三种:
?
SIMPLE为默认类型。
为什么要让抽象类BaseExecutor实现Executor接口,然后让具体实现类继承抽象类呢? 这就是模板方法模式的实现。 模板方法模式就是定义一个算法骨架,并允许子类为一个或者多个步骤提供实现。模板方法是得子类可以再不改变算法结构的情况下,重新定义算法的某些步骤。 关于模板方法模式推荐阅读: 抽象方法是在子类汇总实现的,每种执行器自己实现自己的逻辑,BaseExecutor最终会调用到具体的子类中。 抽象方法
?
|