Mybatis架构设计图 --转载


参考
《深入理解mybatis原理》 MyBatis的架构设计以及实例分析
MyBatis架构设计及源代码分析系列:MyBatis架构
Mybatis运行原理及源码解析
mybatis 3.4.6源码深度解析(一)
原生Mybatis框架源码解析
Mybatis源码分析-整体设计(一)

一.整体架构分析

1.功能层面

Mybatis架构设计图 --转载

2.源码结构

Mybatis架构设计图 --转载

3.工作流程图

Mybatis架构设计图 --转载

4.解析配置文件时序图

Mybatis架构设计图 --转载

5.调用时序图

Mybatis架构设计图 --转载

二.核心组件分析

从MyBatis代码实现的来看,个人认下MyBatis主要包含以下这些核心部件:

  • SqlSession 作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能
  • Executor MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护
  • StatementHandler 封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数、将Statement结果集转换成List集合。
  • ParameterHandler 负责对用户传递的参数转换成JDBC Statement 所需要的参数,
  • ResultSetHandler 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合;
  • TypeHandler 负责java数据类型和jdbc数据类型之间的映射和转换
  • MappedStatement MappedStatement维护了一条<select|update|delete|insert>节点的封装,
  • SqlSource 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回
  • BoundSql 表示动态生成的SQL语句以及相应的参数信息
  • Configuration MyBatis所有的配置信息都维持在Configuration对象之中。