扩展-PageHelper分页插件
2024-09-08 07:50:17
1、PageHelper 分页插件简介
1) PageHelper是MyBatis中非常方便的第三方分页插件
2) 官方文档:
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md
3) 我们可以对照官方文档的说明,快速的使用插件
2、PageHelper的使用步骤
1) 导入相关包pagehelper-x.x.x.jar 和 jsqlparser-0.9.5.jar
2) 在MyBatis全局配置文件中配置分页插件(注意插入顺序位置)
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
3) 使用PageHelper提供的方法进行分页
4) 可以使用更强大的PageInfo封装返回结果
3、Page对象的使用
1) 在查询之前通过 PageHelper.startPage(页码,条数) 设置分页信息,该方法返回Page对象
@Test
public void testPageHelper() throws Exception{
SqlSessionFactory ssf = getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
EmployeeMapper mapper =
session.getMapper(EmployeeMapper.class);
//设置分页信息
Page<Object> page = PageHelper.startPage(9, 1);
List<Employee> emps = mapper.getAllEmps();
for (Employee employee : emps) {
System.out.println(employee);
}
System.out.println("=============获取分页相关的信息=================");
System.out.println("当前页: " + page.getPageNum());
System.out.println("总页码: " + page.getPages());
System.out.println("总条数: " + page.getTotal());
System.out.println("每页显示的条数: " + page.getPageSize());
} finally {
session.close();
}
}
4、PageInfo对象的使用
1) 在查询完数据后,使用PageInfo对象封装查询结果,可以获取更详细的分页信息以及可以完成分页逻辑
@Test
public void testPageHelper1() throws Exception{
SqlSessionFactory ssf = getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
//设置分页信息
Page<Object> page = PageHelper.startPage(9, 1);
List<Employee> emps = mapper.getAllEmps();
//
PageInfo<Employee> info = new PageInfo<>(emps,5);
for (Employee employee : emps) {
System.out.println(employee);
}
System.out.println("=============获取详细分页相关的信息=================");
System.out.println("当前页: " + info.getPageNum());
System.out.println("总页码: " + info.getPages());
System.out.println("总条数: " + info.getTotal());
System.out.println("每页显示的条数: " + info.getPageSize());
System.out.println("是否是第一页: " + info.isIsFirstPage());
System.out.println("是否是最后一页: " + info.isIsLastPage());
System.out.println("是否有上一页: " + info.isHasPreviousPage());
System.out.println("是否有下一页: " + info.isHasNextPage()); System.out.println("============分页逻辑===============");
int [] nums = info.getNavigatepageNums();
for (int i : nums) {
System.out.print(i +" " );
}
} finally {
session.close();
}
}
分页实现: 首页 上一页 1 2 3 4 5 下一页 末页
package com.atguigu.ssm.util; import javax.servlet.http.HttpServletRequest; import com.atguigu.ssm.bean.Emp;
import com.github.pagehelper.PageInfo; /**
* 首页 上一页 1 2 3 4 5 下一页 末页
*
*/
public class PageUtil { public static String getPageInfo(PageInfo<Emp> pageInfo, HttpServletRequest request) { String path = request.getContextPath() + "/";
StringBuilder builder = new StringBuilder(); //拼接首页
builder.append("<a href='"+path+"emps/1'>首页</a>");
builder.append(" "); //拼接上一页
if(pageInfo.isHasPreviousPage()) {
builder.append("<a href='"+path+"emps/"+pageInfo.getPrePage()+"'>上一页</a>");
builder.append(" ");
}else {
builder.append("上一页");
builder.append(" ");
} //拼接页码
int[] nums = pageInfo.getNavigatepageNums();
for (int i : nums) {
if(i == pageInfo.getPageNum()) {
builder.append("<a style='color:red;' href='"+path+"emps/"+i+"'>"+i+"</a>");
builder.append(" ");
}else {
builder.append("<a href='"+path+"emps/"+i+"'>"+i+"</a>");
builder.append(" ");
}
} //拼接下一页
if(pageInfo.isHasNextPage()) {
builder.append("<a href='"+path+"emps/"+pageInfo.getNextPage()+"'>下一页</a>");
builder.append(" ");
}else {
builder.append("下一页");
builder.append(" ");
} //拼接尾页
builder.append("<a href='"+path+"emps/"+pageInfo.getPages()+"'>尾页</a>");
builder.append(" "); return builder.toString(); } }
最新文章
- CISCO VLAN ACL
- 【迁移学习】2010-A Survey on Transfer Learning
- Python For Data Analysis -- IPython
- c# UDP通信 列子
- 【LeetCode OJ】Pascal&#39;s Triangle II
- leetcode2:Add Two Numbers
- 用Eclipse+ADT创建可运行项目,创建lib项目,引用一个lib项目
- pjsip视频通信开发(上层应用)之EditText重写
- css解决IE6、Chrome、ff 浏览器position:fixed;和闪动问题
- Bash的脚本参数
- TreeView递归绑定数据的两种方法
- bzoj3156防御准备
- [速成]了解一致性hash算法
- 【http转https】其之二:申请Let&#39;s Encrypt颁发SSL证书
- ubuntu14.04下部署Tsung
- [boost][filesystem] 扫描给定目录下所有项
- POJ 1061 青蛙的约会(拓展欧几里得)
- php弹出式登录窗口并获得登录后返回值
- webpack打包配置模板
- 学习ABP遇到的问题汇总
热门文章
- QGIS 插件开发Debug教程——使用Pycharm
- python学习-Day5
- Halo 开源项目学习(四):发布文章与页面
- Docker Compose 的介绍、安装与使用
- k8s入门之ConfigMap(九)
- 记录一下l联想Y7000安装双系统(win10+ubuntu16.04)
- linux fedora35 配置jdk,安装mysql,安装tomcat
- CTFHub-HTTP协议五关刷题解答
- 好客租房6-React脚手架的应用(细节)
- 【JNPF修改通告】fastjson≤1.2.80反序列化漏洞