前言

mybatis的前身是iBatis,其源于“Internet”和“abatis”的组合,是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集,它可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJO映射成数据库中的记录。

mybatis整体架构 mybatis功能架构_java

一、Mybatis的架构设计简介

mybatis整体架构 mybatis功能架构_编程语言_02

Mybatis的功能架构分为三层:

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

二、梳理自己的Mybatis的设计思路

大家平时应该经常使用 MyBatis 框架,对于 SqlSessionFactory、SqlSession、Mapper 等也有一些概念。**在这免费分享一个手写MyBatis的视频教程,会讲到如何从源码来分析实现这些概念。**看源码对于很多人来说都是一个比较枯燥和乏味的过程,如果不做抽象和总结,会觉得非常乱。另外,看源码不要去扣某个细节,尽量从宏观上理解它。这样带着结果看过程你就会知道设计者为什么这么做。

mybatis整体架构 mybatis功能架构_mybatis整体架构_03

MyBatis 框架的架构图,也是实现手写MyBatis框架的重要三步

mybatis整体架构 mybatis功能架构_大数据_04

  1. 首先创建 SqlSessionFactory 实例,SqlSessionFactory 就是创建 SqlSession 的工厂类。
  2. 加载配置文件创建 Configuration 对象,配置文件包括数据库相关配置文件以及我们在 XML 文件中写的 SQL。
  3. 通过 SqlSessionFactory 创建 SqlSession。
  4. 通过 SqlSession 获取 mapper 接口动态代理。
  5. 动态代理回调 SqlSession 中某查询方法。
  6. SqlSession 将查询方法转发给 Executor。
  7. Executor 基于 JDBC 访问数据库获取数据,最后还是通过 JDBC 操作数据库。
  8. Executor 通过反射将数据转换成 POJO 并返回给 SqlSession。
  9. 将数据返回给调用者。

三、从 0 开始手写一个 Mybatis 框架,三步搞定教学!

先前说到整个 MyBatis 框架的架构图,也是实现手写MyBatis框架的重要三步

mybatis整体架构 mybatis功能架构_编程语言_05

本次教学内容分为:

1.五分钟重温MyBatis,抓住故事主线

2.手写第一步,你必须了解的初始化

3.手写第二步,MyBatis那些不为人知的秘密?

4.手写第三步,论标准流程的重要性!

5.深挖MyBatis的更多干货