2020年11月22日星期日

精尽 MyBatis 源码分析

该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址、Mybatis-Spring 源码分析 GitHub 地址、Spring-Boot-Starter 源码分析 GitHub 地址)进行阅读

MyBatis 版本:3.5.2

MyBatis-Spring 版本:2.0.3

MyBatis-Spring-Boot-Starter 版本:2.1.4

整体架构

本文主要分享 MyBatis 项目的一个整体情况,对 MyBatis 有个整体的了解,可以去 MyBatis GitHub 上面 Fork 到你自己的 GitHub 上面,然后拉取到自己本地

项目结构

MyBatis-Structure

根据包名差不多就可以知道每个模块的作用

整体架构

MyBatis 的整体架构分为三层:基础支持层核心处理层接口层

Structure

按照 MyBatis 这个架构图从下往上对其进行逐步分析,笔者是根据芋道源码《精尽 MyBatis 源码分析》一系列文档学习 MyBatis 的,非常感谢~

基础支持层

基础支持层,包含整个 MyBatis 的基础模块,这些模块为核心处理层的功能提供了良好的支撑

  1. 解析器模块:解析文件,处理占位符
  2. 反射模块:对 Java 原生的反射进行良好的封装,进行了一系列的优化,提供更加简洁易用的 API 方便使用
  3. 异常模块:定义 MyBatis 自己的 Exception
  4. 数据源模块:提供相应的 DataSource 数据源实现,支持与第三方数据源的继承
  5. 事务模块:对数据库中的事务进行了抽象,提供事务接口的简单实现
  6. 缓存模块:提供一级缓存和二级缓存的支持
  7. 类型模块:提供别名机制,JDBC Type 和 Java Type 之间的转换
  8. IO模块:提供资源加载功能
  9. 日志模块:提供日志输出,支持集成第三方日志框架
  10. 注解模块:提供相关注解
  11. Binding模块:提供 Mapper 接口与

核心处理层

核心处理层,实现了 MyBatis 的核心处理流程,包括 MyBatis 的初始化以及完成一次数据库操作的涉及的全部流程

接口层

接口层,核心为 SqlSession 接口,该接口定义了 MyBatis 暴露给应用程序调用的 API,也就是上层应用与 MyBatis 交互的桥梁。接口层在接收到调用请求时,会调用核心处理层的相应模块来完成具体的数据库操作

总结

总的来说,MyBatis 的代码不多,比较简单易懂,按照上面三个模块(基础支持层 => 核心处理层 => 接口层)逐步进行分析,后续会提供一系列的文档,包含 MyBatis 与 Spring 和 Spring Boot 集成的源码解析,请熟读 MyBatis 官方文档

参考文章:芋道源码《精尽 MyBatis 源码分析》









原文转载:http://www.shaoqun.com/a/492755.html

kk馆:https://www.ikjzd.com/w/1713

周宁:https://www.ikjzd.com/w/1647

优1宝贝:https://www.ikjzd.com/w/1507


该系列文档是本人在学习Mybatis的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析GitHub地址、Mybatis-Spring源码分析GitHub地址、Spring-Boot-Starter源码分析GitHub地址)进行阅读MyBatis版本:3.5.2MyBatis-Spring版本:2.0.3MyBatis-Spring-Boot-Starter版本:
亚马逊全球开店制造:亚马逊全球开店制造
一淘网比价平台:一淘网比价平台
中秋节去深圳世界之窗玩怎么样?世界之窗有什么好玩的?:中秋节去深圳世界之窗玩怎么样?世界之窗有什么好玩的?
游石花水洞景区门票有优惠吗?海南石花水洞咨询电话?:游石花水洞景区门票有优惠吗?海南石花水洞咨询电话?
马来西亚有哪些特产?:马来西亚有哪些特产?