Mybatis整体架构

一、官方简介

Mybatis是一款旨在帮助开发人员屏蔽底层重复性的JDBC代码的持久层框架,支持通过配置文件或者注解将ResultSet映射成Java对象。相对于其它ORM框架,Mybatis更为轻量级,支持定制化SQL和动态SQL,方便优化查询性能,同时包含了良好的缓存机制。

二、Mybatis整体架构

Mybatis整体架构大致分为三个结构:

  • 接口层
  • 核心处理层
  • 基础支持层
    Mybatis整体架构图

    2.1接口层:
        Mybatis的接口层对外提供用户对DB的访问,提供这一基础功能的是一个叫做SqlSession的接口类,它是Mybatis的门户,这个接口提供了一些对DB进行操作的基础API,如下图:
    SqlSession接口类结构

    2.2核心处理层:

    核心处理层的作用是处理接口层传进来的指令,并将这些指令转换成SQL语句,拼执行相关SQL,然后对结果集进行封装映射。
核心处理层的两个关键类是Configuration和Executor。

  • Configuration:
    持有了Mybatis 运行期间所有的数据,包括 SQL 模板,结果集映射数据等。
  • Executor:
    Executor负责维护缓存和事务管理,并将数据库操作委托给StatementHandler。
    以下是核心处理层的主要任务:
  1. 配置解析:Mybatis初始化时会加载配置文件、映射文件和Mapper接口的注解信息,解析完毕后会已对象的形式保存到Configuration对象中。
  2. SQL解析与scripting 模块:Mybatis支持通过配置实现动态的SQL,即根据不同参数生成SQL。
  3. SQL执行与结果集映射:Executor负责维护缓存和事务管理,并将数据库操作委托给StatementHandler,ParmaterHandler负责完成SQL语句的实参绑定并通过Statement对象执行SQL,最后通过ResultSet返回结果,交由ResultSetHandler处理映射成Java对象。
  4. 插件:支持开发者通过插件接口对Mybatis进行扩展。

2.3基础支持层

    接口层提供API操作,处理层处理API请求,除了这些外,还需要一些基础服务,比如日志记录、事务处理、加载配置文件信息、缓存支持等。比如处理层的将SQL语句、结果集等封装成java对象存储在Configuration,还有Mybatis的一级缓存、二级缓存以及整个架构的运行记录等。
下面是基础支的相关功能:

  1. 数据源模块:提供数据源实现并能集成第三方数据源模块。
  2. 事务管理模块:可以和Spring集成开发,对事物进行管理。
  3. 缓存模块:提供一级缓存和二级缓存,将部分请求拦截在缓存层,分担数据库压力,提高性能。
  4. Binding模块:在调用SqlSession相应方法执行数据库操作时,需要指定映射文件中的SQL节点,Mybatis通过Binding模块将自定义Mapper接口和映射文件关联,避免拼写等错误导致在运行时才被发现。
  5. 日志模块:能够集成多种第三方日志框架。

2.4整个Mybatis的调用处理流程如下图

调用处理流程

三、参考资料

  • Mybatis官网
  • 是否文章:Mybatis简介和整体架构
  • 知乎帖子:Mybatis 整体架构

你可能感兴趣的:(Mybatis整体架构)