前言

分页插件的必要性

互联网应用中,分页可谓无处不在,在每个需要展示数据的地方,都能找到分页的影子。在日常开发中,为了追求效率,通常使用数据库的物理分页。这时,对于一个业务逻辑SQL,大多数情况需要输出两段SQL来达到分页效果:count查询总数和limit分页,这无疑增加了大量的工作量。对于这种大量的、相似的、非业务逻辑的代码,抽象出公共插件是势在必行的。

分页插件原理

Mybatis给开发者提供了一个拦截器接口,只要实现了该接口,就可以在Mybatis执行SQL前,作一些自定义的操作。分页插件就是在此基础上开发出来的,对于一个需要分页的SQL,插件会拦截并生成两段SQL。举一个简单的例子:

原SQL:

select * from table where a = '1'

拦截后的查询总数SQL:

select count(*) from table where a = '1'

拦截后的分页SQL:

select * from table where a = '1' limit 5,10

这样我们只需要根据业务逻辑开发原SQL,不需关心分页语法对原SQL的影响,拦截器已经为我们处理好了。

pom.xml文件

添加mybatis、pagehelper、mysql和web依赖。

    <properties><java.version>1.8</java.version><mybatis.version>2.1.0</mybatis.version><mybatis.pagehelper.version>1.2.5</mybatis.pagehelper.version></properties><dependencies><!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.version}</version></dependency><!-- pagehelper --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>${mybatis.pagehelper.version}</version></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>

配置文件

配置数据库信息和分页参数。

spring:datasource:driver-class-name: com.mysql.jdbc.Driverusername: rootpassword: 123456url: jdbc:mysql://localhost:3306/test?serverTimezone=GMT
pagehelper:#配置数据库类型helperDialect: mysql#3.3.0版本可用 - 分页参数合理化,默认false禁用#启用合理化时,如果pageNum<1 会查询第一页,如果pageNum>pages会查询最后一页#禁用合理化时,如果pageNum<1 或pageNum>pages会返回空数据reasonable: true#是否支持接口参数来传递分页参数,默认falsesupportMethodsArguments: true#3.5.0版本可用 - 为了支持startPage(Object params)方法#增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值#可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值params: count=countSql

实体类

@Alias("user")
public class User {private Long id;private String name;private Integer age;private String email;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}
}

mapper类

使用注解方式。

@Mapper
public interface UserMapper {@Select("select * from user")Page<User> getUserList();
}

controller类

@RestController
public class UserController {@Autowiredprivate UserMapper userMapper;//    http://localhost:8080/getUserList?pageNum=1&pageSize=2@RequestMapping("getUserList")public Page<User> getUserList(Integer pageNum, Integer pageSize) {PageHelper.startPage(pageNum, pageSize);Page<User> userList = userMapper.getUserList();return userList;}
}

测试

SpringBoot-使用分页插件(PageHelper)相关推荐

  1. springboot整合分页插件PageHelper

    一. 概述 后端开发80%都是查询操作, 而查询经常涉及到数据分页, 分页工具有很多, 本文介绍的是分页插件PageHelper, 工程基于springboot 参考文章: springBoot my ...

  2. SpringBoot之分页插件PageHelper的使用

    在springboot中使用PageHelper插件有两种较为相似的方式,接下来我就将这两种方式进行总结. 方式一:使用原生的PageHelper 1.在pom.xml中引入依赖 <depend ...

  3. 解决SpringBoot集成分页插件pagehelper出现的循环依赖问题

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 问题描述 SpringBoot2.6.7中集成分页插件com.github.pagehelpe ...

  4. springboot+mybatis分页插件pageHelper的配置与使用

    1.在pom文件里面加入pageHelper分页jar包依赖: <dependency><groupId>com.github.pagehelper</groupId&g ...

  5. springboot中分页插件pageHelper的使用

    优点:无需你自己去封装以及关心sql分页等问题,使用很方便,前端取数据也很方便. 1.包的依赖 <!--pagehelper --><dependency><groupI ...

  6. SpringBoot集成MyBatis的分页插件PageHelper

    [写在前面] 项目的后台管理系统需要展示所有资源信息,select * 虽然方便但数据量过于庞大会严重降低查找效率,页面加载慢,用户体验差.分页自然是必要选择,但原生的方法过于繁杂.MyBatis的分 ...

  7. Springboot集成mybatis通用Mapper与分页插件PageHelper

    Springboot集成mybatis通用Mapper与分页插件PageHelper 插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 ...

  8. SpringBoot集成MyBatis的分页插件PageHelper(回头草)

    俗话说:好?不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心 ...

  9. springboot进阶,分页插件 pageHelper,Swagger整合,日志

    文章目录 1,课程回顾 2,本章重点 3,具体内容 3.1 整合连接池 3.2 springboot日志配置: 3.3 springboot整合shiro 3.4 mybatis分页插件 pageHe ...

  10. hql分页获取数据总数_最简洁的分页插件PageHelper

    最简洁的分页插件PageHelper 简介 大部分后台管理项目,用的最多的展现方式是列表显示,所以我把列表查询中的分页插件拿出来写一下,方便以后写代码的时候直接复制粘贴.在我们最熟悉的springbo ...

最新文章

  1. css3学习 理论之渐变
  2. Redis源码剖析(十二)有序集合跳表实现
  3. python发送json数据_在Websockets上发送JSON
  4. 我恋爱了,对象是纸片人
  5. 【转载】手动删除引用nuget如何还原
  6. clickhouse-小结 mutation操作 视图
  7. 推荐几个学霸级的技术公众号陪你过暑假
  8. PAIP.MYSQL设置远程账户登陆总结
  9. 编程C语言集装箱体积,《我的第①本c语言编程书:C语言从入门到精通》国家863中部软件孵化器【pdf】...
  10. Elastic-Job | 由浅入深一篇理解分布式定时任务的基本用法及简单原理解析
  11. java中 this详解
  12. h5微信游戏服务器,H5游戏微信大型帮派战源码分享 带服务器端+客户端
  13. 免费书签管理工具:浏览器书签杂乱的整理方法
  14. SIFT原作者David Lowe主页
  15. Image caption领域的研究现状及分析
  16. C语言/C++基础之大炮打飞机
  17. 365抽奖软件 v6.1.7
  18. java中获取农历日期以及星期几
  19. 信奥中的数学:斐波那契数列
  20. Net访问微信公共平台接口

热门文章

  1. JavaWeb开发前景
  2. [已解决] c#签名时出错
  3. sql文件导入mysql数据库出错_如何解决navicat导入sql文件出错的问题
  4. js获取当前服务器的ip
  5. .net 4.0 ValidateRequest=false 无效解决方法
  6. 《白帽子讲Web安全》memo0
  7. 【Fiddler介绍】
  8. 计算机的基本键盘知识,知识:计算机键盘上每个键的功能_计算机的基本知识_IT /计算机_信息...
  9. 基于大数据的银行反欺诈的分析报告 【转载,可用于风控系统架设借鉴】
  10. python flask项目结构_Flask项目结构