扩展-PageHelper分页插件
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(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧