一、简述
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
MyBatis 是一款优秀的持久层框架,它支持定制化 Sql、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的PoJos(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
二、MyBatis特点
(1)M小yBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架
(2)MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集
(3)MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普 通的Java对象)映射成数据库中的记录
(4)MyBatis是一个半自动的ORM(Object Relation Mapping)框架s
三、下载地址
MyBatis下载地址:https://github.com/mybatis/mybatis-3
MyBatis SQL Mapper Framework for Java
四、MyBatis核心对象
(1)SqlSession对象,该对象包含了执行SQL语句的所有方法,例如JDBC里面Connection
说明 | 对象 |
---|---|
Executor接口 | 执行器.统一调度其他三个对象执行对应的SQL |
StatementHandler | 使用的数据库中的Statement执行操作 相当于字符串拼接 |
PrepareStatement | 使用SQL传参的方式处理 |
ResultHandler | 对最后的结果进行封装 |
(2)Executor接口,将传递过来的参数动态生成SQL语句,负责查询缓存。
(3)MappedStatement对象,该对象负责对SQL封装,用于存储需要映射的SQL语句及参数等信息
(4)ResultHandler对象,用户返回结果集合,封装成最红想要的数据类型,可以自定义返回
五、功能架构
MyBatis架构
我们把Mybatis的功能架构分为三层:
(1)API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
(2)数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
(3)基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
六、框架结构
MyBatis框架的架构主要包括以下几个核心组件:
(1)SqlSessionFactory:这是MyBatis框架的入口点,用于创建SqlSession对象。通过SqlSessionFactory可以获取数据库连接并执行SQL语句。
(2)SqlSession:SqlSession是MyBatis与数据库交互的核心接口。它封装了数据库连接和事务的管理,并提供了执行SQL语句、获取映射器(Mapper)等功能。
(3)Mapper接口:Mapper接口定义了数据库操作的方法。开发者只需要编写Mapper接口的方法,而不需要编写具体的SQL语句,MyBatis会根据接口的定义自动生成相应的SQL语句。
(4)Mapper映射文件:Mapper映射文件是数据库表和Mapper接口方法之间的映射配置文件。它使用XML或者注解的方式定义SQL语句以及结果映射关系。
(5)Executor:Executor负责执行SQL语句并返回结果。MyBatis提供了三种Executor实现:SimpleExecutor、ReuseExecutor和BatchExecutor。
(6)Configuration:Configuration是MyBatis的全局配置对象,包含了MyBatis框架的各种配置信息,如数据库连接信息、缓存配置、映射文件等。
通过以上组件的协作,MyBatis能够实现灵活、高效的数据库访问。开发者只需要关注业务逻辑和Mapper接口的定义,而无需编写冗长的SQL语句和数据库操作代码。