[Mybatis]-Mybatis 整体架构

该系列文章针对 Mybatis 3.5.1 版本

 一、Mybatis 整体架构

ORM 框架的产生,是为了解放生产力,提高代码的复用性,于是在 JDBC 上进行一层层抽象优化,随着抽象内容越来越多,为了使得代码更易于维护,职责更清晰,慢慢的将代码根据细化的职责进行模块化,从而形成 ORM 框架。

Mybatis 便是其中一个。

Mybatis 代码抽象模块大体分为三层结构

  • 接口层

  • 核心处理层

  • 基础支持层

如下图(图片来自《Mybatis技术内幕》)

1.1、接口层

接口层是 Mybatis 对外提供数据库访问操作的门户,而充当门户的是 SqlSession 接口类。

·SqlSession· 接口类图如下:

 

接口层提供了基础API 如下:

1、增(insert)、删(delete)、改(update)、查(select)
 提供了基础的自定义 SQL 操作

2、getMapper
 获取 SQL 查询 API

3、getConnection、commit、rollback 等
 Mybatis 封装了 JDBC 操作,但是仍然支持 JDBC 原生API

4、getConfiguration
 Configuration 贯穿了Mybatis 整个运行期间,Configuration 包含了 Mybatis SQL语句,Mapper API 等几乎所有的数据,所有获取到了 Configuration ,相当于获取到了 Mybatis 运行期间所有的数据。

总的来说:SqlSession 提供了封装好的增删改查的接口,支持 JDBC 的原生调用 API,支持 Mybatis 原生的调用。

1.2、核心处理层

接口层的门户是 SqlSessionSqlSession 提供 API 操作入口,也是整个 Mybatis 框架操作的入口。

 

核心处理层存在的意义就是用来处理从接口层传入的关于 Mybatis 相关操作的执行指令(因为接口层支持原生 JDBC 的API操作,原生 JDBC API 操作不受 Mybatis 管辖)。

而核心处理层主要的操作就是将操作指令转换成 SQL 语句,然后执行SQL语句,最后进行结果集的映射。

核心处理层的操作包括但不限于:

  • SQL 参数动态设置

  • SQL 执行

  • SQL 执行结果动态结果集映射

核心处理层围绕两个关键的类:

  • Configuration
    Configuration 持有了Mybatis 运行期间所有的数据,包括 SQL 模板,结果集映射数据等。

  • Executor
    Executor 翻译为 执行器,是发起 SQL 操作的执行入口

1.3、基础支持层

接口层提供访问 API,核心处理层用来处理 API 请求,发起数据库调用。

 

以上两层构成了 Mybatis 访问数据库的整个操作,但是数据库的操作除了这些流程外,还需要基础支持,如:配置文件加载解析支持,缓存算法支持,日志记录支持等。

前面提到 Mybatis 的运行时数据,包括 SQL 语句,Java对象和数据库映射关系都存储在 Configuration 对象中,而这些数据都是以Java对象,或者 XML等格式的文件形式存在,而基础支持层的工作之一就是将这些文件,转换为对象。

还有缓存算法支持可以用来提高框架整体性能,日志记录用来观察框架整体运行情况

二、总结

Mybatis 运行图如下:

 

针对 Mybatis 的整体架构可以分为三层:接口层、核心处理层、基础支持层。

每层之间相互关联,或者可以说下层基础决定上层建筑。

最底层的“基础支持层”,将所有配置信息,加载解析并封装到对象中,供其上层“核心处理层”使用。如:缓存策略,日志功能,SQL语句等。

核心处理层” 通过 “基础支持层”提供的基础数据,执行数据库操作,为其上层“接口层”提供了 API 实现。

“接口层” 为用户使用的API层,提供有 原生 JDBC API,Mybatis 操作 API。


更多文章实时更新,关注公众号!

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值