目录
1、MyBatis概述
1.1 MyBatis简介
1.2 MyBatis架构
1.3 MyBatis执行流程
1.4 与Hibernate的比较
2、MyBatis初体验
2.1 创建并配置项目
2.2 创建数据库表
2.3 引入MyBatis及其配置
2.3.1 MyBatis引入及配置
2.3.2 Log4j引入及配置
2.4 测试
2.4.1 编写测试类
2.4.2 编写实体类及Mapper文件
2.4.3 测试查询数据
2.5 使用步骤总结
3、MyBatis实现DAO层CRUD
3.1 接口实现类实现
3.1.1 编写接口与实现类
3.1.2 编写Mapper文件
3.1.3 测试
3.2 动态代理实现
3.2.1 Mapper的命名空间
3.2.2 获取动态代理实现类
3.2.3 测试
3.2.4 总结
1、MyBatis概述
1.1 MyBatis简介
MyBatis 世界上流行最广泛的SQL 映射框架,由Clinton Begin 在2002 年创建,其后,捐献给了Apache基金会,成立了iBatis 项目。2010年这个项目从Apache迁移到Google Code改名为Mybatis 之后将版本升级到3.X,其曾经官网:http://blog.mybatis.org/,从3.2版本之后迁移到github(https://github.com/mybatis/mybatis-3)。
Mybatis是一个类似于Hibernate的ORM持久化框架,支持普通SQL查询,存储过程以及高级映射。Mybatis通过使用简单的XML或注解用于配置和原始映射,将接口和POJO(Plain Old Java Objects,普通的 Java对象)对象映射成数据库中的记录。
由于Mybatis是直接基于JDBC做了简单的映射包装,所有从性能角度来看:JDBC > Mybatis > Hibernte
下载地址(3.2.8):
https://github.com/mybatis/mybatis-3/releases
官方文档:
http://mybatis.github.io/mybatis-3/
官方文档(中文版):
http://mybatis.github.io/mybatis-3/zh/index.html
1.2 MyBatis架构
接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。主要目的是根据调用的请求完成一次数据库操作。
支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西。为上层的数据处理层提供最基础的支撑。
1.3 MyBatis执行流程
执行过程:
- mybatis配置mybatis-config.xml,名称可变,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在mybatis-config.xml中加载;
- 通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂;
- 由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行;
- mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器;
- Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id;
- Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过 Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数;
- Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过 Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。
1.4 与Hibernate的比较
MyBatis与Hibernate都是流行的持久层开发框架;两者之间各有优缺点,具体的比较详见《MyBatis与Hibernate的区别》
2、MyBatis初体验
2.1 创建并配置项目
1 )创建Java Project
2)配置项目;添加mysql的驱动包到项目。