Mybatis源码解析之核心类分析

版权声明:感谢您的阅读,欢迎讨论并指出不足,可自由转载,但请注明出处和作者 https://blog.csdn.net/qq_39470742/article/details/88342318

以下Mybatis解析基于org.mybatis:mybatis:3.4.5

一、整体设计

图片来源
Mybatis框架设计
二、核心类解读

1. SqlSession和SqlSessionFactory

SqlSession是Mybatis框架对外暴露的顶层API接口,通过这个接口可以实现增删改查、事务管理等数据库操作,框架中提供了DefaultSqlSession和SqlSessionManager两个实现类。
在SqlSession的所有增删改查的操作方法中,其第一个参数均为String statement,对应接口层的statementId(或者mapper接口中方法的方法名),具有DefaultSqlSessionFactory和SqlSessionManager两个实现类。
SqlSessionFactory是SqlSession的工厂类,根据连接或者数据源生成SqlSession。

SqlSession和SqlSessionFactory类图

2. Executor

Executor是mybatis的核心执行器接口,mybatis的大部分逻辑处理都在Executor完成,包括缓存处理,根据MappedStatement和参数生成动态sql语句,并返回sql的执行结果。框架中的抽象类BaseExecutor实现了Executor,SimpleExecutor、BatchExecutor,ReuseExecutor,ClosedExecutor又继承了BaseExecutor。
Executor类图

3. StatementHandler

StatementHandler负责与jdbc中的Statement相关的交互处理,包括参数设置和ResultSet转化。
StatementHandler类图

4. ParameterHandler

参数处理与映射,给Statement对象设置参数,最常见的就是被StatementHandler和Interceptor调用。

5. ResultSetHandler

结果集处理与映射,处理Statement执行后产生的结果集ResultSet,生成结果列表List。也用作储存过程执行后的输出。

6. TypeHandler

jdbc和java类型的映射,协助ParameterHandler和ResultSetHandler进行处理。

7. Configuration

维护mybatis中所有的配置信息。

三、层次结构
图片来源

层次结构

猜你喜欢

转载自blog.csdn.net/qq_39470742/article/details/88342318