众所周知,MyBatis是一款优秀的持久层框架。如果想深入了解一门技术,我们必须先熟悉它的一个整个架构是什么样的。
MyBatis的整体架构分为三层:基础支持层、核心处理层和接口层。
接口层
接口层是面向用户的,其核心是SqlSession接口,我们使用MyBatis就是使用SqlSession提供的API,它是应用程序与MyBatis交互的桥梁。当我们使用MyBatis与数据库交互的时候,接口层就调用核心处理层的相应模块来完成具体的数据库操作。
核心处理层
介绍了接口层之后,就是我们的核心处理层。大致的说,核心处理层实现了MyBatis的核心处理流程,包括MyBatis的初始化和一次数据库操作的涉及的全部流程。
- 配置解析
MyBatis初始化会加载mybatis-config.xml配置文件、映射配置文件以及Mapper接口中的注解信息。解析后的配置信息,会形成相应的对应保存在Configuration对象中。随后,利用Configuration对象创建SqlSessionFactory对象。到了这一步,大家应该很熟悉了。我们就是使用SqlSessionFactory对象来获得SqlSession对象的。
- SQL执行
SQL执行涉及到几个组件。其中主要的有Executor、StamentHandler、ParameterHandler和ResultHandler。Executor负责维护一级缓存和二级缓存,并提供事务管理;Executor将数据库的相关操作交给StatementHandler,它会通过ParameterHandler完成参数绑定,再通过Statement执行SQL语句并得到结果集ResultSet,最后通过ResultSetHandler完成结果集的映射。
基础支持层
基础支持层包含整个MyBatis的基础模块,为核心处理层提供很好支撑。主要包括以下几个模块:
- 反射模块
- 类型转换模块
- 日志模块
- 资源加载模块
- 解析器模块
- 数据源模块
- 事务管理
- 缓存模块
- Binding模块
下一篇我们讲基础支持层的这些模块。