顶层类/接口
Configuration:MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中;应用作用域
SqlSession:作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要的增删改查功能;线程作用域
MappedStatement:MappedStatement维护一条<select|update|delete|insert>节点的封装
Executor:MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护;默认为SimpleExecutor,实际使用的是ReuseExecutor和CacheExecutor
StatementHandler:封装了JDBC Statement操作,负责对JDBC statement的操作,如设置参数等;实现有SimpleStatementHandler、PreparedStatementHandler、CallableStatementHandler,实现类中持有ParameterHandler和ResultSetHandler
ParameterHandler:负责对用户传递的参数转换成JDBC Statement所对应的数据类型
ResultSetHandler:负责将JDBC返回的ResultSet结果集对象转换成List类型的集合,默认实现为DefaultResultSetHandler,持有ParameterHandler对象
TypeHandler:负责java数据类型和jdbc数据类型(也可以说是数据表列类型)之间的映射和转换
SqlSource:负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回
BoundSql:动态生成的SQL语句以及相应的参数信息
SqlSession相关
DefaultSqlSession:SqlSession的默认实现类,通过DefaultSqlSessionFactory生成
SqlSessionTemplate:spring代理SqlSession,实际调用的是DefaultSqlSession
SqlSessionFactory:SqlSession的工厂类接口,主要实现为DefaultSqlSessionFactory,该类生成DefaultSqlSession
SqlSessionFactoryBean:SqlSessionFactory的工厂Bean,用于生成DefaultSqlSessionFactory;应用作用域
SqlSessionFactoryBuilder:SqlSessionFactoryBean借助SqlSessionFactoryBuilder传入全局配置Configuration创建DefaultSqlSessionFactory;方法作用域
启动/注册相关
MapperScan:通过使用@MapperScan可以指定要扫描的Mapper类的包的路径;使用Mybatis和spring集成常用2种方式,一种是xml配置,另一种就是注解
MapperScannerRegistrar:mapper文件扫描注册类,配合注解@MapperScan一起使用
ClassPathMapperScanner:mapper对象扫描生成类,MapperScannerRegistrar通过该类生成实际的mapper对象;该原理类似于spring-cloud-openfeign的路径扫描实现原理
MapperScannerConfigurer:mapper文件扫描配置,配合xml方式一起使用
TypeHandlerRegistry:注册和管理jdbc数据类型映射
TypeAliasRegistry:类型别名注册器,用于管理mapper.xml中类型与别名之间的映射关系
解析/构建相关
XMLConfigBuilder:SqlSessionFactoryBean中configLocation指定配置文件(一般为mybatis-config.xml)的构建解析类,作用为解析类型别名(typeAliases)、注入插件(Interceptor)、解析类型处理器(TypeHandler)等
XMLMapperBuilder:mapper文件的解析与构建,其中方法bindMapperForNamespace是借助MapperRegistry来实现MapperProxy与namespace(DAO接口)的绑定
Node:mapper文件中的节点
SqlNode:TextSqlNode-动态结点,需要替换占位符、StaticTextSqlNode-静态结点,不需要替换
XMLStatementBuilder:mapper文件节点(XNode)的解析与构建,借助MapperBuilderAssistant生成MappedStatement
MapperBuilderAssistant:mapper构造器助手,通过MappedStatement的构造器Builder构造MappedStatement对象,并存入Configuration的Map<String,MappedStatement>结构,key为mapper文件节点的id
SqlSourceBuilder:生成SqlSource
XMLScriptBuilder:生成SqlSource
Mapper相关
MapperProxy:mapper接口的代理实现,实际方法由MapperMethod实现
MapperMethod:mapper接口中方法的代理实现
MapperProxyFactory:MapperProxy的工厂类,每个mapper对应一个MapperProxyFactory,通过JDK动态代理方式生成MapperProxy
MapperFactoryBean:启动时通过MapperRegistry生成/获取MapperProxy
MapperRegistry:mapper文件注册类,负责MapperProxyFactory的注册管理以及通过MapperProxyFactory获取mapper的代理实现MapperProxy
MapperAnnotationBuilder:
其它
Reflector:反射类,获取和保存Class对象的所有GET/SET方法及参数类型,用于生成结果对象的属性注入
ReflectorFactory:Reflector的工厂类接口,获取和保存Class类对应的Reflector对象,实现类为DefaultReflectorFactory
MetaClass:class元信息,持有Reflector及ReflectorFactory
ObjectWrapper:接口,对象包装类;BeanWrapper:bean对象的包装类;MapWrapper:map对象包装类
ObjectFactory:对象工厂,默认实现为DefaultObjectFactory
ResultHandler:保存结果集
MetaObject:保存一个结果对象
ResultContext:保存结果对象的一个属性
StaticSqlSource:静态SqlSource
DynamicSqlSource:动态SqlSource
RawSqlSource:原始SqlSource,内含StaticSqlSource或DynamicSqlSource
Transaction:事务对象
TransactionFactory:事务工厂类
Interceptor:插件接口
InterceptorChain:插件注册类
StatementType:标记操作SQL的对象,STATEMENT-直接操作sql,不进行预编译;PREPARED-预处理,参数,进行预编译,获取数据,默认;CALLABLE-执行存储过程
ParameterMapping:保存用户传入参数的对象,用于参数传递及生成动态sql时获取参数值