1.1 MyBatis与ORM
ORM是Object与Relation之间映射. 包括Object->Relation和Relation->Object两方面.
Hibernate是一个完整ORM框架. 而MyBatis完成的是Relation->Object.这一点可以从
其官方网站看到.
http://mvnrepository.com/artifact/org.mybatis
MyBatis并不刻意于完成ORM(对象映射)的完整概念. 而是旨在让开发人员使用更简单、更方便的方式完成数据库操作功能. 这对于应用系统来说也是最实用的
1.2 MyBatis架构
1.2.1 接口层
接口层是MyBatis提供给开发人员的一套API.主要使用SqlSession接口.通过SqlSession接口和Mapper接口.开发人员,可以通知MyBatis框架调用那一条SQL命令以及SQL命令关联参数.
1.2.1 接口层
接口层是MyBatis提供给开发人员的一套API.主要使用SqlSession接口.通过SqlSession接口和Mapper接口.开发人员,可以通知MyBatis框架调用那一条SQL命令以及SQL命令关联参数.
SqlSession接口使用方式
Mapper接口使用方式
1.2.2 数据处理层
数据处理层是MyBatis框架内部实现.来完成对数据库具体操作.主要负责:
(1) 参数与SQL命令绑定
(2) SQL命令发送方式
(3) 查询结果类型转换
1.2.3 支撑层
支撑层用来完成MyBaits与数据库基本连接方式以及SQL命令与配置文件对应.主要负责:
(1) MyBatis与数据库连接方式管理
(2) MyBatis对事务管理方式
(3) SQL命令与XML配置对应
(4) MyBatis查询缓存管理
1.3 MyBatis调用流程
1.3.1 SqlSession:
接收开发人员提供Statement Id 和参数.并返回操作结果
1.3.2 Executor:
MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护
1.3.3 StatementHandler:
封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数、将Statement结果集转换成List集合。
1.3.4 ParameterHandler:
负责对用户传递的参数转换成JDBC Statement 所需要的参数
1.3.5 ResultSetHandler:
负责将JDBC返回的ResultSet结果集对象转换成List类型的集合
1.3.6 TypeHandler:
负责java数据类型和jdbc数据类型之间的映射和转换
1.3.7 MappedStatement:
维护了一条<select|update|delete|insert>节点的封装
1.3.8 SqlSource:
负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回BoundSql表示动态生成的SQL语句以及相应的参数信息
1.3.9 Configuration:
MyBatis所有的配置信息都维持在Configuration对象之中