1. 架构设计
Mybatis的功能架构可以分为三层:
@H_403_11@Mybatis和数据库交互有两种方式:
2. 主要构件及相互关系
构建 | 描述 |
---|---|
sqlSession | 作为Mybatis工作的顶层API接口,作为会话访问,完成增删改查功能 |
Executor | Mybatis执行器,是Mbatis的核心,负责sql动态语句的生成和查询缓存维护 |
StatementHandler | 负责处理JDBC的Statement的交互,包括对Statement设置参数,以及讲JDBC返回的ResultSet结果集转换为List (设置参数、执行sql、封装结果) |
ParameterHandler | 负责根据传递的参数值,对Statement对象设置参数 |
ResultSetHandler | 负责将resultSet集合转换为List |
TypeHandler |
负责jdbcType和javaType之间的数据转换; 1. 负责对Statement对象设置指定的参数; 2. 对Statement返回的结果集resultSet,取出特定的列 |
MappedStatement | 维护了一条<select|update|delete|insert>节点的封装 |
sqlSource | 负责根据用户传递的parameterObject,动态地生成sql语句,将信息封装到Boundsql对象中,并返回 |
Boundsql | 表示动态生成的sql语句以及相应的参数信息 |
总体流程:
1. 加载配置文件并初始化
触发条件:加载配置文件
配置文件包括:conf.xml 、 Mapper文件*.xml 和 java代码中的注解,将主配置文件内容解析封装到Configuration,将sql的配置信息加载成为一个Mappedstatement对象,存储在内存中。
2. 接收调用请求
触发条件:调用Mybatis的API
传入参数:statementId和传入参对象
处理过程:将请求传递给下层的请求处理层进行处理
3. 处理操作请求
触发条件:API接口层传递请求过来
传入参数:statementId和传入参对象
处理过程:
4. 返回处理结果
将最终结果返回