1.Mybatis介绍
MyBatis 是一款优秀的持久层框架(ORM框架),它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
ORM是Object Relational Mapping的简称,中文叫对象关系映射,对象关系映射通过使用描述对象与数据库之间映射的元数据,将面向对象语言程序的对象自动持久化到关系型数据库中。常用的ORM框架有:Mybatis、Spring JPA、Hbernate、Spring Data JDBC等等。
JDBC是SUN公司提供的JAVA语言访问关系型数据的技术规范。JDBC的缺点如下:
(1).需要频繁的创建数据库连接
(2).数据库简单归纳为CRUD(增删改查)4个操作,使用JDBC实现CRUD我们需要编写大量代码
(3).对底层事务、数据类型转换支持差,这些都需要开发者手动去解决
本质上ORM框架就是对JDBC的进一步封装,mybatis封装了JDBC对关系型数据库的各种操作,简化了开发;增加了连接池和一、二缓存,大幅度减少了资源的开销;可以自动生成sql语句。
2.使用Mybatis+Druid+Pagehelper分页插件完成数据持久化
在整合Mybatis之前会先介绍数据库连接池,连接池的作用就是尽量减少不必要的开销,主流的数据库连接池有HikariCP、Druid,SpringBoot2.0以HikariCP作为默认的数据库连接池,HikariCP相比较Druid速度更快,但Druid提供了更多的功能,本次会使用阿里的Druid作为数据库连接池。
本案例也用了pagehelper插件,pagehelper是一款mybatis的分页插件,常见的数据分页有以下几种:
(1).物理分页。将数据库中要分页的所有数据查询出来并装载到一个集合中,然后对这个集合进行分页,简单来说就是对集合的截取操作。
(2).通过数据库limit分页
(3).通过mybatis的interceptor拼接sql实现分页,而pagehelper插件就是通过interceptor实现的分页
创建一个Maven项目,pom.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>springBoot-mybatis-example</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis springBoot整合依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<!-- pagehelper整合SpringBoot依赖,pagehelper一款mybatis分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<!--druid整合SpringBoot依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.1</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
</project>