温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MyBatis整体架构

发布时间:2020-05-09 10:05:26 来源:网络 阅读:1791 作者:randy_shandong 栏目:软件技术

一、模块概览

模块名称
作用
主要类
反射模块
封装JAVA API,易用,进行了缓存优化

类型转换模块
绑定实参及映射查询结果集
日志模块
定位BUG,解决瓶颈
资源加载模块
类加载器,确定类加载器使用顺序
解析器模块

Xpath,初始化解析mybatis-confg.xml,mapper.xml,

动态SQL占位符

XPathParser

TokenHandler

EntityResolver

数据源模块


事务管理模块
抽象处理

缓存模块
提供一级和二级缓存
Binding模块
自定义Mapper接口与映射语句关联

二、模块分析

2.1 解析器模块

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

MyBatis整体架构

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

TokenHandler:解析占位符

MyBatis整体架构


2.2  反射工具箱

MyBatis整体架构

  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类型转换,两种不同类型的桥梁。

MyBatis整体架构

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

3.日志模块

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

MyBatis整体架构

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

MyBatis整体架构

4.Binding

MyBatis整体架构

MapperProxy:代理对象

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

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

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

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


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI