mybatis解读(一)——整体架构

MyBatis整体架构分为三层:基础支持层、核心处理层、接口层。

基础支持层:

  • 反射模块:
  • 类型转换模块:MyBatis为简化配置文件提供了别名机制;
    为SQL语句绑定实参以及映射查询结果集(实现JDBC类型与java类型之间的转换)都是类型转换模块的功能。
    在为SQL绑定实参时将java类型转换成JDBC类型,在映射结果集时,会将数据由JDBC类型转换为java类型。
  • 日志模块:
  • 资源加载模块:对类加载器进行封装,确定类加载器的使用顺序,并提供了加载类文件及其他资源文件的功能。
  • 解析器模块:1:对XPath进行封装,为MyBatis初始化时解析mybatisConfig.xml配置文件以及映射配置文件提供支持;
    2:为处理动态SQL语句中的占位符提供支持。
{ xml解析常见的方式有三种:DOM(Document Object Model)、SAX(Simple API for XML)、StAX(Streaming API for XML);
MyBatis在初始化过程中处理mybatisConfig.xml配置文件及映射配置文件时,使用的是DOM解析方式,并结合使用XPath解析XML配置文件。
DOM是基于树形结构的XML解析方式,它会将整个XML文档读入内存并构建一个DOM树,基于这棵树形结构对各个节点(Node)进行操作。}
  • 数据源模块:
  • 事务模块:
  • 缓存模块:
  • Binding模块:将用户自定义的Mapper接口与映射配置文件关联起来,系统可以通过调用自定义Mapper接口中的方法执行相应的SQL语句完成数据库操作。

开发人员无需编写自定义Mapper接口的实现,MyBatis会自动为创建动态代理对象。

核心处理层:

  • 配置解析:在MyBatis初始化过程中,会加载mybatisConfig.xml配置文件、映射配置文件以及Mapper接口中的注解信息,解析后的配置信息会形成相应的对象并保存到Configuration对象中。
  • SQL解析和scripting模块:MyBatis实现动态SQL语句功能,提供了多种动态SQL对应的节点,例如节点,节点,节点等。通过这些节点的组合使用,开发员可以写出满足各种需求的动态SQL语句。
    MyBatis的scripting模块会根据用户传入的实参,解析映射文件中定义的动态SQL节点,并形成数据库可执行的SQL语句。
    之后处理占位符,绑定用户传入的实参。
  • SQL执行:执行SQL比较重要的几个组件:Executor、StatementHandler、ParameterHandler、ResultSetHandler。
    Executor主要负责维护一级缓存和二级缓存,并提供事务管理的相关操作,它会将数据库相关操作托付给StatementHandler完成;
    StatementHandler首先通过ParameterHandler完成SQL语句的实参绑定,然后通过java.sql.Statement对象执行SQL语句,并得到结果集;
    最后通过ResultSetHandler完成结果集的映射,得到结果对象并返回。

插件:MyBatis提供了插件接口,可以通过添加用户自定义插件进行MyBatis的扩展。

mybatis整体架构图 mybatis整体架构图

猜你喜欢

转载自blog.csdn.net/qq_34777858/article/details/81116301