mybatis3.x框架体系结构
介绍
持久层框架有很多,重量级的有hibernate轻量级的有spring的jdbcTempleate和apache的DbUtils,它们有各自的优点和应用场景。mybatis算是一个折中的框架,既有orm框架的部门自动映射功能(指的是入参和出参的映射)也有原生jdbc的高效性能。mybatis的功能很强大,然而其实现却比较简单、优雅。尤其互联网行业对其非常的热衷。
框架设计
![Mybatis框架体系图](http://i.imgur.com/jkHXuhY.png)
接口层—和数据库交互的方式
a.使用传统的MyBatis提供的API
b. 使用Mapper接口
使用传统的MyBatis提供的API
![使用传统的MyBatis提供的API](http://i.imgur.com/rxQupBN.png)
使用Mapper接口
![使用Mapper接口](http://i.imgur.com/hioRGCq.png)
数据处理层
数据处理层可以说是MyBatis 的核心,从大的方面上讲,它要完成三个功能:
a. 通过传入参数构建动态SQL语句;(入参映射处理)
b. SQL语句的执行以及封装查询结果集成List<E>(出参结果集映射处理)
框架支撑层
1、事务管理机制
2、连接池管理机制
3、缓存机制
4、SQL语句的配置方式
引导层
引导层是配置和启动MyBatis 配置信息的方式。MyBatis 提供两种方式来引导
MyBatis :基于XML配置文件的方式和基于Java API 的方式
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对象之中。
![MyBatis层次结构](http://i.imgur.com/WhOFgmm.png)