mybatis《一》——回顾整体架构原理

1. MyBatis的主要结构

2. MyBatis的主要成员

Configuration MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中

SqlSession 作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要数据库增删改查功能

Executor MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护

StatementHandler 封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数等

ParameterHandler 负责对用户传递的参数转换成JDBC Statement 所对应的数据类型

ResultSetHandler 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合

TypeHandler 负责java数据类型和jdbc数据类型(也可以说是数据表列类型)之间的映射和转换

MappedStatement MappedStatement维护一条<select|update|delete|insert>节点的封装

SqlSource 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回

BoundSql 表示动态生成的SQL语句以及相应的参数信息

3. MyBatis的实现原理

利用反射打通Java类与SQL语句之间的相互转换。

4. MyBatis和数据库的交互有两种方式

4.1.API传统方式

通过传统的MyBatis提供的API:这是传统的传递statement Id和查询参数给sqlsession对象,使用sqlsession对象完成和数据库的交互;

MyBatis提供了非常方便和简单的API,供用户实现对数据库的增删改查数据操作,以及对数据库连接信息和MyBatis自身配置信息的维护操作。

上述使用MyBatis的方法,是创建一个和数据库打交道的sqlsession对象,然后根据statement Id 和参数来操作数据库,这种方式固然很简单和实用,但是它不符合面向对象语言的概念和面向接口编程的编程习惯。由于面向接口的编程是面向对象的大趋势,MyBatis为了适应这一趋势,增加了第二种使用MyBatis支持接口调用方式。

4.2.MAPPER方式

MyBatis将配置文件中的每一个<mapper> 节点抽象为一个Mapper接口,而这个接口中声明的方法和跟<mapper> 节点中的<select|update|delete|insert> 节点项对应,即<select|update|delete|insert> 节点的id值为Mapper接口中的方法名称,parameterType 值表示Mapper对应方法的入参类型,而resultMap 值则对应了Mapper接口表示的返回值类型或者返回结果集的元素类型。

附录

MyBatis原理分析(通俗易懂)

MyBatis 快速入门和重点详解

posted @ 2020-05-03 22:52  杨兮臣  阅读(196)  评论(0编辑  收藏  举报