美文网首页
走进Java程序员:MyBatis的创建执行流程(内附源码)

走进Java程序员:MyBatis的创建执行流程(内附源码)

作者: 辻老板 | 来源:发表于2021-01-04 19:59 被阅读0次

    最近刚学完MyBatis,趁着大好机会,总结一下它的执行流程,面试也爱问这个

    学习就像干饭,干完这顿接下顿——————鲁迅

    第一步:

    首先Mybaitis自己的一个Resources类会去调用一个叫getResourceAsStream()的方法

    加载配置MyBatis的核心配置文件,得到一个流对象。(本质上还是走的java.lang包下的ClassLoader类加载器的getResourceAsStream)

    源码:

    本质上还是去使用java.lang包下的类加载器

    第二步:

    有了这个流对象,下面执行这个方法

    会先去创建一个SqlSessionFactoryBuilder对象(构建者对象),调用build()方法,传入第一步我们得到的那个流对象。

    在这个过程中,首先,MyBatis会先去创建一个XMLConfigBuilder解析器对象,

    解析完成之后,返回一个configuration对象,这个对象里面封装了解析之后我们配置的信息

    正好这个configuration对象,就是我们这个方法创建(I)SqlSessionFactory类型对象需要的参数

    返回的就是一个实现了SqlSessionFactory接口的DefaultSqlSessionFactory对象

    第三步:

    有了这个SqlSesionFactory实现类的对象之后,

    我们调用openSession()的方法,这个过程中

    需要 通 过TransactionFactory 生成 Transaction 对象, 并且, 还需要创建核心执行器 Executor 对象,基于这些条件,

    最终创建了实现SqlSession接口的DefaultSqlSession对象

    第四步:

    之后, 通过 SqlSession 对象执行相应的操作, 如果执行成功, 调用 commit 方法提交事务; 如果失败, 调用rollback 方法事务回滚. 最后, 调用 close 方法关闭session 资源.

    以上, 就是 大概的MyBatis 的运行原理

    MyBatis运行过程中涉及到的类和接口:

    Resources(C) 类

    用于加载MyBatis核心配置文件

    XMLConfigBuilder(C) 类

    用于解析xml文件(核心配置文件)

    Configuration(C)类

    用于存放xml文件解析后的结果

    DefaultSqlSessionFactory(C)类

    是SqlSessionFactory(I)的实现类,创建时需要使用Configruation对象作为参数

    SqlSession(I)接口

    是MyBatis操作的核心

    DefaultSqlSession(C)类

    是SqlSession接口的实现类

    TransactionFactory(I)接口

    用于生产Trasaction对象(关于事务的)

    Transaction(I) 接口

    用于表示操作数据库的事务对象

    Executor(I)接口

    是MyBatis的核心执行器,类似于JDBC中的Statement,常用的实现类是SimpleExecutor

    文章结尾

    好了,MyBatis的运行原理就写到这里,以后更深入的了解后会再来补充。

    本文分享给需要面试刷题的朋友,我特意整理了一下,里面的技术不是靠几句话就能讲清楚,多问题其实答案很简单,但是背后的思考和逻辑不简单,要做到知其然还要知其所以然。

    相关文章

      网友评论

          本文标题:走进Java程序员:MyBatis的创建执行流程(内附源码)

          本文链接:https://www.haomeiwen.com/subject/jqxboktx.html