* MyBatis - 3、源码流程分析

目录:

1、开发重点知识

  • MyBatis快速入门
  • result 与 resultMap
  • 怎么样传递多个参数
  • 获取主键
  • SQL 的参数
  • 代码生成器
  • 关联查询
  • 缓存
  • 与 spring 的集成

2、源码骨架分析

  • 整体架构
  • 日志模块分析
  • 数据源模块分析
  • 缓存模块分析
  • 反射模块分析

3、源码流程分析

  • 流程整体分析
  • 配置加载阶段
  • 代理阶段分析
  • 数据读写阶段

4、知识拾遗

  • 与 spring 的结合源码分析
  • 插件开发
  • 手写 MyBatis

MyBatis 源码流程分析

1,流程整体分析

1.1 MyBatis 核心流程三大阶段

在这里插入图片描述

1.2 MyBatis 的初始化

建造者模式

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式
在这里插入图片描述

  • Product:要创建的复杂对象
  • Builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建;
  • ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。 在建造过程完成后,提供产品的实例;
  • Director:调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建;
MyBatis 建造者类图

在这里插入图片描述

  • BaseBuilder:所有解析器的父类,包含配置文件实例,为解析文件提供的一些通用的方法;
  • XMLConfigBuilder: 主要负责解析mybatis-config.xml;
  • XMLMapperBuilder: 主要负责解析映射配置文件;
  • XMLStatementBuilder: 主要负责解析映射配置文件中的SQL节点;
MyBatis 的初始化

在这里插入图片描述
在这里插入图片描述

映射器的关键类
  • Configuration : Mybatis启动初始化的核心就是将所有xml配置文件信息加载到Configuration对象中, Configuration是单例的,生命周期是应用级的;
  • MapperRegistry:mapper接口动态代理工厂类的注册中心。在MyBatis中,通过mapperProxy实现InvocationHandler接口,MapperProxyFactory用于生成动态代理的实例对象;
  • ResultMap:用于解析mapper.xml文件中的resultMap节点,使用ResultMapping来封装id,result等子元素;
  • MappedStatement:用于存储mapper.xml文件中的select、insert、update和delete节点,同时还包含了这些节点的很多重要属性;
  • SqlSource:用于创建BoundSql,mapper.xml文件中的sql语句会被解析成BoundSql对象,经过解析BoundSql包含的语句最终仅仅包含?占位符,可以直接提交给数据库执行;

ResultMap图解
在这里插入图片描述
mappedStatment图解
在这里插入图片描述

configuration类图解
在这里插入图片描述

MyBatis初始化过程时序图

在这里插入图片描述

Sqlsession

在这里插入图片描述

创建SqlSession 策略模式

在这里插入图片描述

SqlSession相关类UML
在这里插入图片描述

2,配置加载阶段

3,代理阶段分析

4,数据读写阶段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值