12、Mybatis之分页插件
12.1、引入依赖

<!--分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
12.2、配置分页插件

注意:plugins标签要在environments标签之前
<plugins>
<!--设置分页插件-->
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
12.3、使用示例
12.3.1、未分页查询示例

@Test
public void testPagehelper(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
List<Emp> emps = empMapper.selectByExample(null);
for (Emp emp : emps) {
System.out.println(emp);
}
}
12.3.2、分页查询示例

注意:从控制台日志可知,开启分页功能后,Pagehelper会通过拦截器的方式自动在查询sql中添加limit语句;
其中,语句的第一个参数值为(pageNum-1)*pageSize;第二个参数值为pageSize
@Test
public void testPagehelper(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
//在查询之前,使用PageHelper.startPage(int pageNum, int pageSize)开启分页功能
//pageNum:当前页的页码
//pageSize:每页显示的条数
PageHelper.startPage(2,3);
List<Emp> emps = empMapper.selectByExample(null);
for (Emp emp : emps) {
System.out.println(emp);
}
}
12.3.3、分页查询进阶示例

@Test
public void testPagehelper(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
//在查询之前,使用PageHelper.startPage(int pageNum, int pageSize)开启分页功能
//pageNum:当前页的页码
//pageSize:每页显示的条数
PageHelper.startPage(2,3);
List<Emp> emps = empMapper.selectByExample(null);
//在查询获取list集合之后,使用PageInfo<T> pageInfo = new PageInfo<>(List<T> list, int navigatePages)获取分页相关数据
//list:分页之后的数据
//navigatePages:导航分页的页码数
PageInfo<Emp> empPageInfo = new PageInfo<Emp>(emps,3);
System.out.println(empPageInfo);
}
12.3.3.1、分页相关数据详解
PageInfo{
pageNum=2, pageSize=3, size=3, startRow=4, endRow=6, total=9, pages=3,
list=Page{count=true, pageNum=2, pageSize=3, startRow=3, endRow=6, total=9, pages=3, reasonable=false, pageSizeZero=false}
[Emp{empId=4, empName='小军', age=null, gender='女', deptId='null'},
Emp{empId=5, empName='小明1', age=20, gender='男', deptId='null'},
Emp{empId=8, empName='小红', age=25, gender='男', deptId='null'}],
prePage=1, nextPage=3, isFirstPage=false, isLastPage=false, hasPreviousPage=true, hasNextPage=true,
navigatePages=3, navigateFirstPage=1, navigateLastPage=3, navigatepageNums=[1, 2, 3]
}
| 属性 | 解析 |
|---|---|
| pageNum | 当前页的页码 |
| pageSize | 每页显示的条数 |
| size | 当前页显示的真实条数 |
| total | 总记录数 |
| pages | 总页数 |
| prePage | 上一页的页码 |
| nextPage | 下一页的页码 |
| isFirstPage | 是否为第一页 |
| isLastPage | 是否为最后一页 |
| hasPreviousPage | 是否存在上一页 |
| hasNextPage | 是否存在下一页 |
| navigatePages | 导航分页的页码数 |
| navigatepageNums | 导航分页的页码,[1, 2, 3] |
12、Mybatis之分页插件的更多相关文章
- SpringBoot集成MyBatis的分页插件 PageHelper
首先说说MyBatis框架的PageHelper插件吧,它是一个非常好用的分页插件,通常我们的项目中如果集成了MyBatis的话,几乎都会用到它,因为分页的业务逻辑说复杂也不复杂,但是有插件我们何乐而 ...
- Mybatis的分页插件PageHelper
Mybatis的分页插件PageHelper 项目地址:http://git.oschina.net/free/Mybatis_PageHelper 文档地址:http://git.oschina. ...
- Mybatis 的分页插件PageHelper-4.1.1的使用
Mybatis 的分页插件 PageHelper 项目地址:http://git.oschina.net/free/Mybatis_PageHelper 文档地址:http://git.oschin ...
- Mybatis之分页插件pagehelper的简单使用
最近从家里回来之后一直在想着减肥的事情,一个月都没更新博客了,今天下午没睡午觉就想着把mybatis的分页插件了解一下,由于上个月重新恢复了系统,之前创建的项目都没了,又重新创建了一个项目. 一.创建 ...
- spring boot(二)整合mybatis plus+ 分页插件 + 代码生成
先创建spring boot项目,不知道怎么创建项目的 可以看我上一篇文章 用到的环境 JDK8 .maven.lombok.mysql 5.7 swagger 是为了方便接口测试 一.Spring ...
- ajax+json模态框中分页(spring+struts+mybatis+easyui分页插件)
0.业务需求: 点击每个数字的时候可以显示每个对应的详细记录.也就是得点击11的时候拿着开采部与C级去查询.
- Sprin Boot2.0之整合Mybatis整合分页插件
pageHelper PageHelper 是一款好用的开源免费的 Mybatis 第三方物理分页插件 物理分页 支持常见的 12 种数据库.Oracle,MySql,MariaDB,SQLite,D ...
- 理解 Mybatis的分页插件 PageHelper
Mybatis + SpringMVC + Maven实现分页查询 (推荐采用的插件是PageHelper) 先看一下之前的这篇博客,这里推荐了 Mybatis 的分页方法. 按照上面的方法设置后,确 ...
- 利用mybatis的分页插件实现商品列表的显示
分析思路: 当我们点击查询商品的时候,会出现商品的列表,并按上下页可以实现分页的查询的功能. 首先首先我们先找到商品查询商品的按钮在jsp的那个页面,即首页index.jsp 这里有个url即显示商品 ...
- mybatis的分页插件使用方法
1.下载所需要的jar包,如果使用maven可以在maven中添加依赖: 插件的实现原理: 如果你想使用本项目的jar包而不是直接引入类,你可以在这里下载各个版本的jar包(点击Download下的j ...
随机推荐
- 【.NET】C#/.NET新建项目sln,增加src和test文件夹问题和解决方案
问题介绍 经常逛github找优秀的.NET项目看,看到github上的项目的层级有src test,sln放在外层.如下图: 发现自己再Visaul Studio新建的项目即使添加了src和te ...
- 从零开始使用 Astro 的实用指南
在这个实用的Astro指南中,我将指导你完成设置过程,并告诉你如何构造你的文件.你将学习如何添加页面.交互式组件,甚至是markdown文章.我还会告诉你如何从服务器上获取数据,创建布局,并使用van ...
- Python批量下载鼠标样式,自动化一条龙处理详解
目录 前情提要 爬虫环境 抓包分析请求 编写代码: 展示效果 结束语 前情提要 最近发现一款特别好看的壁纸软件,其中提供了鼠标样式,感觉很好看!很精致!心想肯定是请求下载然后启用鼠标样式, 那么发送请 ...
- OpenOffice4.1.6 linux安装/卸载教程
以下是centos的安装方法 1.先安装并配置好jdk 2.拷贝 把Apache_OpenOffice_4.1.6_Linux_x86-64_install-rpm_zh-CN.tar.gz拷贝到自己 ...
- 【Linux】shell编程(一) 变量
[Linux]shell编程(一) 变量 目录 [Linux]shell编程(一) 变量 什么是shell编程 如何运行shell脚本 第一行 #!/bin/bash 第一行叫什么? WHAT IS ...
- MAUI Blazor 项目实战 - 从0到1轻松构建多平台应用UI
前言 最近在项目中尝鲜了MAUI,总体感受下来还是挺不错的,优缺点并存,但是瑕不掩瑜,目前随着.Net版本的迭代升级对它的支持也越来越友好,相信未来可期!感兴趣的朋友欢迎关注.文章中如有不妥的地方,也 ...
- 从输入URI到浏览器渲染中间都经历了什么
这篇文章总共分为两个部分,第一部分我会把从输入url到浏览器渲染的整个流程给大致说一下.第二部分我就会一一介绍各个部分的详细作用. 一.从输入url到浏览器渲染的整个流程 1.DNS域名解析 2. ...
- StencilJs学习之组件装饰器
stenciljs 可以方便的构建交互式组件 支持以下装饰器 component state prop watch method element event listen Component 装饰器 ...
- Codeforces Round #879 (Div. 2) A-E
比赛链接 A 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; bool solve() { i ...
- 谁在以太坊区块链上循环交易?TuGraph+Kafka的0元流图解决方案
都在说数据已经成为新时代的生产资料. 但随着大数据和人工智能等技术的发展,即便人们都知道数据的价值日益凸显,却无法凭借一己之力获取和分析如此大规模的数据. 要想富,先修路.要想利用新时代的数据致富,也 ...