jee第6章 --- 初识MyBatis
MyBatis(前身是iBatis)是一个支持普通
SQL查询、存储过程以及高级映射
的持久层框架
。它和SSH中的Hibernate类似。(SSH的两个SS分别指Strust2和Spring)
MyBatis框架也被称之为ORM(Object/Relation Mapping,即对象关系映射)框架。它是一种为解决面向对象与关系型数据库中数据类型不匹配的技术,它通过描述Java对象与数据库表之间的映射关系,自动将Java应用程序中的对象持久化到关系型数据库的表中。
ORM框架的工作原理
:
Hibernate与MyBatis有什么区别?
Hibernate
- Hibernate是一个全表映射的框架。
- 提供POJO到表的映射关系。
- 需另掌握HQL,Hibernate自动生成对应的SQL,并调用JDBC接口来执行,其开发效率比MyBatis高。
- Hibernate的缺点:它在多表关联时,对SQL查询的支持较差;更新数据时,需发送所有字段;不支持存储过程;不能通过优化SQL来优化性能等。
MyBatis
- MyBatis是一个
半自动映射
的框架。
- 提供POJO、SQL和映射关系。
- 与Hibernate相比,编写SQL,比用Hibernate的工作量大,但
MyBatis可以配置动态SQL并优化SQL
。可以通过配置决定SQL的映射规则,它还支持存储过程等。- 用MyBatis更适用于一些复杂的和需要优化性能。
在应用程序中引入核心包、lib目录中的依赖包即可使用MyBatis
注意:采用哪种类型的数据库,需要将对应类型的数据库驱动包添加到应用程序的类路径中。(Eclipse界面项目结点中的WEB-INF/lib/)
MyBatis在操作数据库时,主要分为8大步骤:
(1) 读取MyBatis配置文件mabatis-config.xml
,mabatis-config.xml作为MaBatis的全局配置文件,配置了MyBatis的运行环境等信息,其主要是获取数据库连接。
(2) 加载映射文件Mapper.xml
。Mapper.xml即SQL映射文件,该文件配置了操作数据库的SQL语句,需要在mybatis-config.xml中加载才能执行。mybatis-config.xml可以添加多个配置文件,每个配置文件对应数据库中的一张表。
(3) 构建会话工厂
。通过MyBatis的环境等配置信息构建会话工厂SqlSessionFactory。
(4) 创建SqlSession对象
。由会话工厂创建SqlSession对象。,该对象中包含执行SQL的所有方法。
(5) MyBatis底层定义了一个Executor接口来操作数据库
,Executor接口会根据SqlSession传递的参数动态生成SQL语句,同时负责查询缓存的维护。
(6) 根据生成的SQL语句生成MappedStatement对象
。
(7) 输入参数映射
。向MappedStatement输入映射对象,这里的输入参数的映射过程就相当于JDBC编程中对preparedStatement对象设置参数的过程。
(8) 输出参数映射
。执行SQL语句,对MappedStatement对象返回的结果进行处理。