MyBatis整体架构

一、模块概览

模块名称 作用 主要类
反射模块 封装JAVA API,易用,进行了缓存优化
类型转换模块 绑定实参及映射查询结果集
日志模块 定位BUG,解决瓶颈
资源加载模块 类加载器,确定类加载器使用顺序
解析器模块
Xpath,初始化解析mybatis-confg.xml,mapper.xml,

动态SQL占位符


XPathParser

TokenHandler

EntityResolver

数据源模块
事务管理模块 抽象处理
缓存模块 提供一级和二级缓存
Binding模块 自定义Mapper接口与映射语句关联

二、模块分析

2.1 解析器模块

顾名思义:提供XML文件的解析。

GenericTokenParser:通用的占位符解析器。

TokenHandler:解析占位符

2.2  反射工具箱

  1. Reflector:一个Reflector对应一个类,缓存了反射需要类的元信息。
  2. ReflectorFactory:生成缓存Reflector
  3. TypeParameterResolver:工具类,解析指定类中的字段,方法返回值,方法参数的类型。
  4. PropertyTokenizer 是一个Iterator接口,实现嵌套属性解析。
  5. MetaClass:类级别元信息的封装和处理
  6. ObjectWrapper:对象的包装,抽象了对象的属性信息,定义了更新属性,查询属性信息的方法。
  7. ObjectFactory:创建指定类型的对象
  8. MetaObject:调用ObjectWrapper,完成对象属性的检测,获取,设置等功能。

3. 类型转换

JDBC到JAVA类型转换 及JAVA类型到JDBC类型转换,两种不同类型的桥梁。

ResolverUtil:根据指定的条件查找指定包下的类。

3.日志模块

适配了第三方日志接口的差异。

JDBC调试:通过JDK动态代理方式,将JDBC操作通过指定的日志框架打印出来。

4.Binding

MapperProxy:代理对象

MapperRegistry:Mapper接口及对应代理对象工厂的注册中心。

MapperMethod:封装了Mapper接口中对应方法的信息,以及SQL语句信息。

ParamNameResolver:Mapper接口定义的方法参数。记录参数列表中位置索引和参数名称对应关系

MethodSignature:Mapper接口中定义的方法的相关信息。

时间: 2024-10-25 05:21:34

MyBatis整体架构的相关文章

01 Mybatis 整体架构

01 Mybatis 简介 Mybatis 整体架构分为三层,分别是基础层.核心处理层.和接口层.如下图: 基础支持层 基础支持层包含整个 Mybatis 的基础模块,这些模块为核心处理层的功能提供了良好的支撑下面简单描述各个模块的功能. 反射模块 MyBatis 中专门提供了反射模块,该模块对Java 原生的反射进行了良好的封装,提供了更加简洁易用的 API, 方便上层使调用,并且对反射操作进行了一系列优化,例如缓存了类的元数据,提高了反射操作的性能. 类型转换模块 MyBatis 为简化配置

《深入理解mybatis原理》 MyBatis的架构设计以及实例分析

MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现. 一.MyBatis的框架设计        注:上图很大程度上参考了iteye 上的chenjc_it所写的博文原理分析之二:框架整体设计 中的MyBatis架构体图,chenjc_it总结的非常好,赞一个! 1.接口层---和数据库交互的方式 MyBatis

Spring Framework(框架)整体架构 变迁

Spring Framework(框架)整体架构 2018年04月24日 11:16:41 阅读数:1444 标签: Spring框架架构 更多 个人分类: Spring框架 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wd2014610/article/details/80061808 Spring 在这个Spring框架大行其道的软件开发世界里,尚有很多工程师天天在用,但是从来不会去思考下,Spring框架的整体架构到底是什么样子的啊.

《深入理解mybatis原理1》 MyBatis的架构设计以及实例分析

<深入理解mybatis原理> MyBatis的架构设计以及实例分析 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现. 一.MyBatis的框架设计   注:上图很大程度上参考了iteye 上的chenjc_it   所写的博文原理分析之二:框架整体设计 中的MyBatis架构体图,chenjc_it总结的

Spring Framework(框架)整体架构

Spring在这个Spring框架大行其道的软件开发世界里,尚有很多工程师天天在用,但是从来不会去思考下,Spring框架的整体架构到底是什么样子的啊.一.首先通过维基百科看看什么是Spring框架维基百科的地址:Spring框架的维基百科 二.看一下官网的介绍Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache License 2.0开源许可协议的形式发布,也有.NET平台上的移植版本.该框架基于 Expert O

tomcat原理解析(二):整体架构

一 整体结构 前面tomcat实现原理(一)里面描述了整个tomcat接受一个http请求的简单处理,这里面我们讲下整个tomcat的架构,以便对整体结构有宏观的了解.tomat里面由很多个容器结合在一起,主要有server,service,context,host,engine,wrapper,connector这7个容器来组装.当然了tomcat里面还有其它容器这里就不一一列举,因为我只看重点的.这7个容器存着父子关系,即可以通过当前容器找自己的父容器和自己的子容器.说到这我画了一个简单的结

【深入浅出jQuery】源码浅析--整体架构(转)

最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐进增强)优雅的处理能力以及 Ajax 等方面周到而强大的定制功能无不令人惊叹. 另外,阅读源码让我接触到了大量底层的知识.对原生JS .框架设计.代码优化有了全新的认识,接下来将会写一系列关于 jQuery 解析的文章. 我在 github 上关于 jQuery 源码的全文注解,感兴趣的可以围观一下

【深入浅出jQuery】源码浅析--整体架构

最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐进增强)优雅的处理能力以及 Ajax 等方面周到而强大的定制功能无不令人惊叹. 另外,阅读源码让我接触到了大量底层的知识.对原生JS .框架设计.代码优化有了全新的认识,接下来将会写一系列关于 jQuery 解析的文章. 我在 github 上关于 jQuery 源码的全文注解,感兴趣的可以围观一下

LevelDB 整体架构

[LevelDB 整体架构]     从图中可以看出,构成LevelDb静态结构的包括六个主要部分:内存中的MemTable和Immutable MemTable以及磁盘上的几种主要文件:Current文件,Manifest文件,log文件以及SSTable文件.当然,LevelDb除了这六个主要部分还有一些辅助的文件,但是以上六个文件和数据结构是LevelDb的主体构成元素. LevelDb的Log文件和Memtable与Bigtable论文中介绍的是一致的,当应用写入一条Key:Value记