美文网首页mybatis
MyBatis源码系列--1.Mybatis整体架构

MyBatis源码系列--1.Mybatis整体架构

作者: WEIJAVA | 来源:发表于2019-04-29 10:09 被阅读0次

    主要工作流程

    • 解析配置文件
      包括全局配置文件和映射器配置文件,这里面包含了如何控制 MyBatis 的行为,和对数据库下达的指令,也就是SQL 信息,最终解析成一个 Configuration 对象。
    • 构建工厂
      要获得会话,必须有一个会话工厂SqlSessionFactory,它里面又必须包含我们的所有的配置信息,所以我们会通过一个Builder 来创建工厂类
    • 操作数据库的接口
      操作数据库的接口,它在应用程序和数据库中间,代表跟数据库之间的一次连接:这个就是 SqlSession 对象
    • SQL执行
      MyBatis 是对 JDBC 的封装,也就是意味着底层一定会出现 JDBC 的一些核心对象,比如执行 SQL 的 Statement,结果集 ResultSet。在 Mybatis 里面,SqlSession 只是提供给应用的一个接口,还不是 SQL 的真正的执行对象,SqlSession 持有了一个 Executor 对象,用来封装对数据库的操作。在执行器 Executor 执行 query 或者 update 操作的时候我们创建一系列的对象,来处理参数、执行 SQL、处理结果集,这里我们把它简化成一个对象:StatementHandler,在接下来的源码章节再去深入了解其他的对象。

    工作流程图如下:

    image.png

    架构分层与模块划分

    在 MyBatis 的主要工作流程里面,不同的功能是由很多不同的类协作完成的,它们分布在 MyBatis jar 包的不同的 package 里面。
    我们来看一下 MyBatis 的 jar 包(基于 3.5.1),


    image.png

    跟 Spring 一样,MyBatis 按照功能职责的不同,所有的 package 可以分成不同的工作层次

    • 接口层
      首先接口层是我们使用最多的。核心对象是 SqlSession,它是上层应用和 MyBatis打交道的桥梁,SqlSession 上定义了非常多的对数据库的操作方法。接口层在接收到调用请求的时候,会调用核心处理层的相应模块来完成具体的数据库操作。
    • 核心层
      1. 把接口中传入的参数解析并且映射成 JDBC 类型
      2. 解析 xml 文件中的 SQL 语句,包括插入参数,和动态
      3. 执行 SQL 语句
      4. 处理结果集,并映射成 Java 对象。

    插件也属于核心层,这是由它的工作方式和拦截的对象决定的

    • 基础支持层
      基础支持层主要是一些抽取出来的通用的功能(实现复用),用来支持核心处理层的功能。比如数据源、缓存、日志、xml 解析、反射、IO、事务等等这些功能

    架构图如下:


    image.png

    ——学自咕泡学院

    相关文章

      网友评论

        本文标题:MyBatis源码系列--1.Mybatis整体架构

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