一、架构设计

mybatis学习笔记四之架构原理

我们可以把mybatis的功能架构分为三层:

(1)接口层:提供给外部使用的接口API,开发人员可以通过这些API来操作数据库。接口层一接收到请求就会调用数据处理层来完成具体的数据处理。Mybatis和数据库交互有两种方式:

使用传统的Mybatis提供的API:sqlSession.selectList("com.lagou.dao.IUserDao.selectList")

使用Mapper的代理方式:IUserDao userDao = sqlSession.getMapper(IUserDao.class);userDao.findAll();

(2)数据处理层:负责具体的参数处理,sql的预编译、sql解析、sql执行以和执行结果映射处理等

(3)框架支撑层:负责基础功能的支撑,包括连接管理,事务管理,缓存处理和配置加载,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑

二、主要构件及其相互关系

mybatis学习笔记四之架构原理

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

 

 

相关文章: