PageHelper实现分页查询
PageHelper是基于拦截器实现的myBatis分页插件
PageHelper的Github主页 : https://github.com/pagehelper/Mybatis-PageHelper
一.通过maven引入PageHelper的jar包
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.8</version>
</dependency>
二.在myBatis配置文件中配置PageHelper
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
<property name="helperDialect" value="mysql"/>
</plugin>
</plugins>
也可以在spring中配置PageHelper,具体步骤请参考PageHelper的Github主页官方教程
三.在Controller层使用PageHelper实现分页查询
/**
* 分页查询练习
* @param mav
* @param currentPage 当前页数
* @return
*/
@RequestMapping("/pagination")
public ModelAndView queryUsers(ModelAndView mav, Integer currentPage){
//紧挨在查询语句前调用PageHelper的startPage(int pageNum, int pageSize)方法,否则分页查询不生效
PageHelper.startPage(currentPage, 5);
//查询用户
List<User> users = ts.queryUsers();
//用PageInfo包装List查询结果,查看PageInfo源码,了解更多
PageInfo<User> pi = new PageInfo<User>(users); mav.addObject("pageInfo", pi);
mav.setViewName("test/paginationTest");
return mav;
}
四.JSP页面的书写方法
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PageHelper分页查询</title>
</head>
<body>
<!-- 点击查询 -->
<a href="${pageContext.request.contextPath }/test/pagination?currentPage=1">查询</a>
<!-- 有上一页的时候显示上一页 -->
<c:if test="${pageInfo.hasPreviousPage }">
<a href="${pageContext.request.contextPath }/test/pagination?currentPage=${pageInfo.prePage}">上一页</a>
</c:if>
<!-- 有下一页的时候显示下一页 -->
<c:if test="${pageInfo.hasNextPage }">
<a href="${pageContext.request.contextPath }/test/pagination?currentPage=${pageInfo.nextPage}">下一页</a>
</c:if>
<!-- 遍历查询结果 -->
<!-- 注意! 在EL表达式中,用.list即可调用pageInfo中封装的list对象 -->
<c:forEach items="${pageInfo.list }" var="u" >
<p>${u.username } + ${u.realname }</p>
</c:forEach> <br/>当前页:${pageInfo.pageNum }
<br/>总页数:${pageInfo.pages }
<br/>当前页面第一个元素在数据库中的行号:${pageInfo.startRow }
<br/>当前页面最后一个元素在数据库中的行号:${pageInfo.endRow }
</body>
</html>
五.其他
重点了解PageInfo类,可以自行查阅源码
关于更详细的内容(更多的配置内容和使用方法等等),请参考PageHelper官方文档
地址 : https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
f
PageHelper实现分页查询的更多相关文章
- SpringBoot 使用 MyBatis 分页插件 PageHelper 进行分页查询
前言:本文档使用的是 SpringBoot,如果是 Spring 还需要在 MyBatis 配置 xml 中配置拦截器,并且 PageHelper 是针对 MyBatis 的,MyBatis 的集成不 ...
- 插件PageHelper实现分页查询
一,需求: CommonQuery--PyQueryBean PyQueryBean:鹏飞历史记录查询,以往哪些人对征信进行了查询.CommonQuery:查询条件:根据查询人(umName).被查询 ...
- ssm+PageHelper实现分页查询
通过搭建ssm框架,然后通过mybatis的分页插件pagehelp进行分页查询.源码:https://gitee.com/smfx1314/pagehelper 看一下项目结构: 首先创建一个mav ...
- 使用PageHelper进行分页查询
service层代码: public Result getDataSetList(String dataCode, String dataName, int pageIndex, int length ...
- Springboot 使用pageHelper实现分页查询
本文链接:https://blog.csdn.net/qq_35387940/article/details/91530234
- 5-7 分页查询PageHelper
1. PageHelper实现分页查询 Day08 1.1 PH作用: PageHelper框架可以实现我们提供页码和每页条数, 自动实现分页效果,收集分页信息 1.2 PH原理: PageHelpe ...
- SpringBoot整合Mybatis关于分页查询的方法
最近公司在用到SpringBoot整合Mybatis时当web端页面数据增多时需要使用分页查询以方便来展示数据.本人对分页查询进行了一些步骤的总结,希望能够帮助到有需要的博友.如有更好的方式,也希望评 ...
- Springboot 整合通用mapper和pagehelper展示分页数据(附github源码)
简介 springboot 设计目的就是为了加速开发,减少xml的配置.如果你不想写配置文件只需要在配置文件添加相对应的配置就能快速的启动的程序. 通用mapp 通用mapper只支持对单表的操作,对 ...
- 浅谈PageHelper插件分页实现原理及大数据量下SQL查询效率问题解决
前因:项目一直使用的是PageHelper实现分页功能,项目前期数据量较少一直没有什么问题.随着业务扩增,数据库扩增PageHelper出现了明显的性能问题.几十万甚至上百万的单表数据查询性能缓慢,需 ...
随机推荐
- 洛谷P1352 没有上司的舞会 [2017年5月计划 清北学堂51精英班Day3]
P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子 结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职 ...
- System.getProperty()和getenv()
System.getproperty(String name) 获取系统属性 System.getProperties() 获取所有系统属性 System.getenv(String name) 获取 ...
- Thread.sleep
Thread.sleep() The current thread changes state from Running to Waiting/Blocked as shown in the diag ...
- 【JZOJ4709】【NOIP2016提高A组模拟8.17】Matrix
题目描述 输入 输出 样例输入 4 3 5 4 1 7 3 4 7 4 8 样例输出 59716 数据范围 解法 40%暴力即可: 60%依然暴力: 100%依次计算第一行和第一列对答案的贡献即可: ...
- FreeMarker中<#include>和<#import>标签的区别
在使用freemarker作为前端页面模板的应用中,会有很多的freemarker模板页面,这些ftl会在不同的页面中重复使用,一是为了简化布局的管理,二是可以重复使用一些代码. 在freemarke ...
- docker.[5] 网络配置-1
docker[5] 网络配置-1 执行 ifconfig 可以看到有一个 docker01 ,这个其实就是容器的虚拟网桥,在执行指令:brctl show(如果该指令不能执行,请先安装: yum -y ...
- java jsp j2ee
1. JavaScript用于编写嵌入在网页文档中的程序,它由浏览器负责解释和执行,可以在网页上产生动态的显示效果和实现与用户交互的功能,譬如,让一串文字跟着鼠标移动,让一个图标在网页漂浮移动,验证用 ...
- Leetcode844.Backspace String Compare比较含退格的字符串
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = " ...
- 【JZOJ4746】【NOIP2016提高A组模拟9.3】树塔狂想曲
题目描述 相信大家都在长训班学过树塔问题,题目很简单求最大化一个三角形数塔从上往下走的路径和.走的规则是:(i,j)号点只能走向(i+1,j)或者(i+1,j+1).如下图是一个数塔,映射到该数塔上行 ...
- BZOJ3832Rally题解
一道思维神题.... 我们像网络流一样加入原点S,与汇点T 用f[i]表示原点到i的最长路,用g[i]表示i到汇点的最长路 f数组与g数组都可以dp求出来的 接下来考虑如何通过这些信息来维护删除某个点 ...