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文件如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>org.example</groupId>
  7. <artifactId>springBoot-mybatis-example</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <parent>
  10. <groupId>org.springframework.boot</groupId>
  11. <artifactId>spring-boot-starter-parent</artifactId>
  12. <version>2.3.4.RELEASE</version>
  13. </parent>
  14. <dependencies>
  15. <dependency>
  16. <groupId>org.springframework.boot</groupId>
  17. <artifactId>spring-boot-starter-web</artifactId>
  18. </dependency>
  19. <!-- mybatis springBoot整合依赖-->
  20. <dependency>
  21. <groupId>org.mybatis.spring.boot</groupId>
  22. <artifactId>mybatis-spring-boot-starter</artifactId>
  23. <version>2.1.3</version>
  24. </dependency>
  25. <!-- pagehelper整合SpringBoot依赖,pagehelper一款mybatis分页插件 -->
  26. <dependency>
  27. <groupId>com.github.pagehelper</groupId>
  28. <artifactId>pagehelper-spring-boot-starter</artifactId>
  29. <version>1.3.0</version>
  30. </dependency>
  31. <dependency>
  32. <groupId>mysql</groupId>
  33. <artifactId>mysql-connector-java</artifactId>
  34. <version>8.0.11</version>
  35. </dependency>
  36. <!--druid整合SpringBoot依赖-->
  37. <dependency>
  38. <groupId>com.alibaba</groupId>
  39. <artifactId>druid-spring-boot-starter</artifactId>
  40. <version>1.2.1</version>
  41. </dependency>
  42. <!-- lombok -->
  43. <dependency>
  44. <groupId>org.projectlombok</groupId>
  45. <artifactId>lombok</artifactId>
  46. </dependency>
  47. <dependency>
  48. <groupId>org.springframework.boot</groupId>
  49. <artifactId>spring-boot-starter-test</artifactId>
  50. </dependency>
  51. </dependencies>
  52. </project>