1.MyBatis 框架
1.1概述:
MyBatis本是本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 2013年11月迁移到Github。
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
(传统写JDBC的过程)
JDBC的操作数据库的代码
// 注册驱动
Class.forName=("com.xiyou.jdbc.Driver");
//获取连接对象
connection = DriverManager.getConnection("jdbc.mysql://localhost:3306/test?useUnicode = true&characterEncoding=utf8","root","root");
//编写sql语句
String sql = "select * from user where name = ?"
//预编译
PreparedStatement s= connecion.prepareStatement(sql);
//设置参数
statement.setSting(1,username);
//执行sql 封装结果
ResultSet resultSet = statement.executeQuery();
虽然传统JDBC也可以解决我们操作数据库的需求,但是它的功能简单并且耦合度高,如果我们在项目上线后修改某条sql语句,就需要去修改Java源码,并对项目进行重新的打包部署等一系列工作,操作起来相当的繁琐。
这里我们还需要介绍一个大名鼎鼎的全自动映射ORM框架:Hibernate
ORM: Object Relation Mapping 对象关系映射,简单说就是把数据库表和实体类的属性对应起来,让我们可以操作实体类就可以实现操作数据库表。
该框架的设计宗旨就是为了消除SQL,它对传统的JDBC进行封装,并且灵活的将SQL语句交给了程序员来完成,这样就解决了Hibernate框架后期对SQL无法优化的缺点。
MyBatis半自动框架
2.为什么使用MyBatis
JDBC:
- SQL写在Java代码中,耦合度提高
- 实际开发中SQL会经常被更新,维护不易
**Hibernate **
- 长难复杂的SQL,对Hibernate而言处理也不容易
- 内部自动产生的SQL,不易做特殊优化
- 基于全映射的全自动框架,进行字段部分映射时比较困难,导致数据库性能下降
JPA
- JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中
MyBatis
- SQL和Java编码分离,功能划分清晰,一个专注业务,一个专注数据。
- 核心SQL可以自己编写,优化比较方便
所有使用MyBatis较为方便