MyBatis框架接口设计
2021-03-28 17:01:59 0 举报
此设计图包括:MyBatis框架接口设计和MyBatis层次结构
作者其他创作
大纲/内容
StatementHandler
基于注解
结果映射配置
基于Java API方式
SQL语句配置
ParameterHandler
MyBatis提供的接口
基于Statement ID
SQL执行
selectselectListselectMapselectOneinsertupdatedelete
ReuseExecutor
事务管理
API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操作数据库。接口层接收到调用请求会立即调用数据处理层来完成数据处理
职责:负责将ResultSet集合转换为List
ResultSetHandler
BoundSql
参数映射
BatchExecutor
连接池管理
SQL语句动态生成
List<?> | int | void
/** com/foo/…/XXXMapper.xml */<mapper namespace=\"com.foo…XXXMapper\"> <select id=\"querySome\" parameterType=\"...\" resultType=\"...\"> .... </select> <update id=\"updateSome\" parameterType=\"...\"> .... </update> <insert id=\"insertSome\" parameterType=\"...\"> .... </insert> <delete id=\"deleteSome\" parameterType=\"...\"> .... </delete> ...</mapper>
参数映射配置
MyBatis Mapper接口工作模式
数据处理层
/** com.foo…XXXMapper.java */public interface XXXMapper { List<?> querySome(...); Integer updateSome(...); Integer insertSome(...); Integer deleteSome(...); ...}
框架支撑层
ResultMap
框架支撑层:负责基础的功能支撑,包括连接池管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件,为上层的数据处理提供最基础的支撑。MyBatis只是对注解配置SQL语句提供了有限的支持,某些高级功能还是要依赖XML配置文件配置SQL
ResultSet
MappedStatement
配置信息维护接口
接口调用方式
参数映射解析
结果类型转换
MyBatis传统工作模式
返回结果集
功能架构
基于Mapper接口
TypeHandler<T>
职责:负责jdbcType与javaType之间的数据转换;1、负责对Statement对象设置特定的参数;2、对Statement返回的结果集ResultSet取出特定列
Statement
MyBatis框架接口设计
SimpleStatement
Configuration
SQL语句配置方式
MyBatis层次结构
参数类型解析
职责:MyBatis执行器,是MyBatis的核心,负责SQL动态语句的生成和查 询缓存的维护
结果处理和映射
缓存机制
CallabeStatement
sqlSession.
基于XML配置方式
结果映射处理
SqlSource
职责:作为MyBatis工作的顶层API作为会话访问,完成增删改查功能
JDBC
PreparedStatement
引导层
数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
基于XML配置
SQL解析
数据增加、删除、修改、查询接口
接口层
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对象之中。
职责:负责根据传递的参数值,对Statement设置参数
SimpleExecutor
Executor
引导层:配置和启动MyBatis
SqlSession
SQL语句解析
职责:负责处理JDBC的Statement的交互,包括Statement设置参数,以及将JDBC返回的ResultSet结果集转换为List
MyBatis提供的API1、传统API —— 基于Statement ID传递Statement Id和参数给SqlSession对象,使用SqlSession对象完成和数据库的交互。2、使用Mapper接口MyBatis 将配置文件中的每一个<mapper> 节点抽象为一个 Mapper 接口,而这个接口中声明的方法和跟<mapper> 节点中的<select|update|delete|insert> 节点项对应,即<select|update|delete|insert> 节点的id值为Mapper 接口中的方法名称,parameterType 值表示Mapper 对应方法的入参类型,而resultMap 值则对应了Mapper 接口表示的返回值类型或者返回结果集的元素类型
收藏
收藏
0 条评论
下一页