MyBatis
主流的 ORM 框架,之前叫做 iBatis,后来更名为 MyBatis,实现数据持久化的框架。同时 Java,.NET,Ruby 三种语言,MyBatis 是⼀个对 JDBC 进行封装的框架。
ORM 框架 Hibernate,MyBatis 和 Hibernate 的区别?
Hibernate 是⼀个“全自动化” ORM 框架,MyBatis 是⼀个“半自动化的”ORM框架。
全自动化:开发者只需要调用相关接口就可以完成操作,整个流程框架都已经进行了封装。Hibernate 实现了 POJO 和数据库表之间的映射,同时可以自动生成 SQL 语句并完成执行。
半自动化:框架只提供⼀部分功能,剩下的工作仍需要开发者手动完成,MyBatis 没有提供 POJO 与数据库表的映射,只实现了 POJO 与 SQL 之间的映射关系,需要开发者自定义 SQL 语句,以及数据与POJO 之间的装配关系。
虽然功能没有 Hinbernate 更加方便,但是这种“半自动化”的方式提高了框架的灵活性,开发者可以根据具体的业务需求,完成定制化的持久层解决方案。
MyBatis 对所有的 JDBC 进行了封装,包括参数设置、SQL 执行、结果集解析等,通过 XML 配置/注解的⽅式完成 POJO 与数据的映射。简单讲,使⽤ MyBatis 进⾏开发,主要完成两步操作:
1、自己编写 SQL
2、自己完成数据库数据与 POJO 的映射
优点:
1、极⼤简化了 JDBC 代码的开发
2、简单好用、容易上手、具有更好的灵活性
3、通过将 SQL 定义在 XML 中的方式降低程序的耦合性
4、支持动态 SQL,可以根据具体业务需求灵活实现功能
缺点:
1、相比于 Hibernate,开发者需要完成更多工作,比如定义 SQL、设置 POJO 与数据的映射关系等。
2、要求开发⼈员具备⼀定的 SQL 编写能力,在⼀些特定场景下工作量比较⼤。
3、数据库移植性差,以为 SQL 依赖于底层数据库,如果要进行数据库迁移,部分 SQL 需要重写编写。
MyBatis 使用
1、创建 Maven 工程,pom.xml 引入相关依赖。
<dependencies>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
</dependencies>
2、创建实体类
package com.southwind.entity;
import lombok.Data;
@Data
public class People {
private Integer id;
private String name;
private Double money; }
3、配置 MyBatis 环境,在 resources 路径下创建 config.xml(文件名可以自定义),配置数据源信息。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 配置 MyBatis 运⾏环境 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源 -->
<