【源码解析】MyBatis 整体架构与源码解析

本文导读

 【总】简述下 MyBatis 的三层架构以及其中各个模块的核心功能,从基础支撑层到核心处理层,再到暴露给调用的接口层。

【分】然后再深入剖析, MyBatis 中 n 种设计模式的使用;MyBatis 工作原理和运行流程 ;动态 SQL 语句解析;映射机制; 一二级缓存;

一、MyBatis 整体架构解析

MyBatis 架构图主要分三层。 基础支撑层: 负责最基础的功能支撑,包括 连接管理、事务管理、配置加载和缓存处理  这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。 数据处理层: 负责具体的 SQL 查找、SQL 解析、SQL 执行和执行结果映射处理   等。它主要的目的是根据调用的请求完成一次数据库操作。 API 接口层: 提供给外部使用的 接口 API ,开发人员通过这些本地 API 来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。

下面对基础支撑层、数据处理层、API 接口层一一简述:

1、基础支撑层

MyBatis 基础支撑层  按照这些单一的能力可以划分为上图所示的九个基础模块。

第一个,类型转换模块。 在 mybatis-config.xml 配置文件中通过 <typeAliase> 标签为一个类定义别名,这里用到的“ 别名机制 ”就是由 MyBatis 基础支撑层中的类型转换模块实现的。类型转换模块还 实现了 MyBatis 中 JDBC 类型与 Java 类型之间的相互转换 ,在 SQL 模板绑定用户传入实参的场景中,类型转换模块会将 Java 类型数据转换成 JDBC 类型数据;在将 ResultSet 映射成结果对象的时候,类型转换模块会将 JDBC 类型数据转换成 Java 类型数据。

第二个,日志模块。 MyBatis 提供了日志模块来集成 Java 生态中的第三方日志框架,该模块目前可以集成 Log4j、Log4j2、slf4j 等优秀的日志框架。        第三个,反射工具模块。 MyBatis 的反射工具箱是在 Java 反射的基础之上进行的一层封装,为上层使用方提供更加灵活、方便的 API 接口。        第四个,Binding 模块。 MyBatis 无须编写 Mapper 接口的具体实现,而是利用 Binding 模块自动生成 Mapper 接口的动态代理对象。        第五个,数据源模块。 MyBatis 自身提供了数据源实现,也是 MyBatis 的默认实现。        第六个,缓存模块。MyBatis 提供在此提供一级缓存和二级缓存。        第七个,解析器模块。MyBatis 中有两大部分配置文件需要解析,一个是 my

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值