1.整体架构
1.基础支持层
2.核心处理层
3.接口层
基础支持层
为核心处理层提供支撑
反射模块
提供反射
类型模块 type
类型转换 java 和jdbc之间的类型转换
为sql绑定实际参数时,会将java类型转换为JDBC类型
映射结果集时,会将数据由JDBC转换成Java类型
日志模块
io模块
资源加载,对类加载器的疯转,确定类加载的使用顺序,并提供了加载类文件以及其他资源文件的功能
解析器模块parsing
对xpath进行封装,为mybatis初始化解析mybatis-config.xml配置文件提供支持
处理动态sql语句的占位符提供支持
数据源 datesource
对接第三方数据源
事务 transaction
对事务进行了抽象,提供了对应的事务接口
Mybatis会与Spring框架继承,并又spting框架管理事务
缓存
提供了一二级缓存
都依赖于基础支持层中的缓存模块实现的。
自带的两集缓存与Mybatis整个应用是运行在一个JVM钟的。共享同一个堆内存
binding:
通过类名+方法名的形式去找到对应的SqlSession方法实现
注解模块 annotation
异常模块
核心处理层
实现了mybatis的核心处理流程,包括mybatis的初始化以及完成一次数据库操作涉及的全部流程
配置解析
builder 配置解析
mapping 操作sql后进行映射
会加载mybatis-config.xml配置文件,映射文件,以及Mapper接口中的注解信息,解析后悔保存在configuration对象中
sql解析
scrpting模块
解析动态节点,形成数据库可执行的sql语句,之后再处理占位符,绑定用户传入的实参
sql执行
executor 执行器
cursor 结果的游标
重要组件
Executor 负责维护一二级缓存.并提供食物管理的相关操作,并委托给StatementHandler完成
StatementHandler 通过ParameterHandler完成sql语句的实参绑定,然后通过java.sql.statement执行sql语句并得到结果集
ResultHandler完成对结果集的映射,得到结果对象并返回
插件层
plugin 模块
对Mybatis进行扩展
接口层
session模块
核心sqlSession接口,定义了暴露给应用程序调用的Api.
接收到请求会调用核心处理层的相应模块来完成操作
其他层
jdbc模块
lang模块
lang
网友评论