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全局配置文件中配置分页插件(注意插入顺序位置)

  1. <plugins>
  2. <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
  3. </plugins>

  3) 使用PageHelper提供的方法进行分页
  4) 可以使用更强大的PageInfo封装返回结果

3、Page对象的使用

  1) 在查询之前通过 PageHelper.startPage(页码,条数) 设置分页信息,该方法返回Page对象

  1. @Test
  2. public void testPageHelper() throws Exception{
  3. SqlSessionFactory ssf = getSqlSessionFactory();
  4. SqlSession session = ssf.openSession();
  5. try {
  6. EmployeeMapper mapper =
  7. session.getMapper(EmployeeMapper.class);
  8. //设置分页信息
  9. Page<Object> page = PageHelper.startPage(9, 1);
  10. List<Employee> emps = mapper.getAllEmps();
  11. for (Employee employee : emps) {
  12. System.out.println(employee);
  13. }
  14. System.out.println("=============获取分页相关的信息=================");
  15. System.out.println("当前页: " + page.getPageNum());
  16. System.out.println("总页码: " + page.getPages());
  17. System.out.println("总条数: " + page.getTotal());
  18. System.out.println("每页显示的条数: " + page.getPageSize());
  19. } finally {
  20. session.close();
  21. }
  22. }

4、PageInfo对象的使用
  1) 在查询完数据后,使用PageInfo对象封装查询结果,可以获取更详细的分页信息以及可以完成分页逻辑

  1. @Test
  2. public void testPageHelper1() throws Exception{
  3. SqlSessionFactory ssf = getSqlSessionFactory();
  4. SqlSession session = ssf.openSession();
  5. try {
  6. EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
  7. //设置分页信息
  8. Page<Object> page = PageHelper.startPage(9, 1);
  9. List<Employee> emps = mapper.getAllEmps();
  10. //
  11. PageInfo<Employee> info = new PageInfo<>(emps,5);
  12. for (Employee employee : emps) {
  13. System.out.println(employee);
  14. }
  15. System.out.println("=============获取详细分页相关的信息=================");
  16. System.out.println("当前页: " + info.getPageNum());
  17. System.out.println("总页码: " + info.getPages());
  18. System.out.println("总条数: " + info.getTotal());
  19. System.out.println("每页显示的条数: " + info.getPageSize());
  20. System.out.println("是否是第一页: " + info.isIsFirstPage());
  21. System.out.println("是否是最后一页: " + info.isIsLastPage());
  22. System.out.println("是否有上一页: " + info.isHasPreviousPage());
  23. System.out.println("是否有下一页: " + info.isHasNextPage());
  24.  
  25. System.out.println("============分页逻辑===============");
  26. int [] nums = info.getNavigatepageNums();
  27. for (int i : nums) {
  28. System.out.print(i +" " );
  29. }
  30. } finally {
  31. session.close();
  32. }
  33. }

分页实现: 首页 上一页 1 2 3 4 5 下一页 末页

  1. package com.atguigu.ssm.util;
  2.  
  3. import javax.servlet.http.HttpServletRequest;
  4.  
  5. import com.atguigu.ssm.bean.Emp;
  6. import com.github.pagehelper.PageInfo;
  7.  
  8. /**
  9. * 首页 上一页 1 2 3 4 5 下一页 末页
  10. *
  11. */
  12. public class PageUtil {
  13.  
  14. public static String getPageInfo(PageInfo<Emp> pageInfo, HttpServletRequest request) {
  15.  
  16. String path = request.getContextPath() + "/";
  17. StringBuilder builder = new StringBuilder();
  18.  
  19. //拼接首页
  20. builder.append("<a href='"+path+"emps/1'>首页</a>");
  21. builder.append("&nbsp;&nbsp;");
  22.  
  23. //拼接上一页
  24. if(pageInfo.isHasPreviousPage()) {
  25. builder.append("<a href='"+path+"emps/"+pageInfo.getPrePage()+"'>上一页</a>");
  26. builder.append("&nbsp;&nbsp;");
  27. }else {
  28. builder.append("上一页");
  29. builder.append("&nbsp;&nbsp;");
  30. }
  31.  
  32. //拼接页码
  33. int[] nums = pageInfo.getNavigatepageNums();
  34. for (int i : nums) {
  35. if(i == pageInfo.getPageNum()) {
  36. builder.append("<a style='color:red;' href='"+path+"emps/"+i+"'>"+i+"</a>");
  37. builder.append("&nbsp;&nbsp;");
  38. }else {
  39. builder.append("<a href='"+path+"emps/"+i+"'>"+i+"</a>");
  40. builder.append("&nbsp;&nbsp;");
  41. }
  42. }
  43.  
  44. //拼接下一页
  45. if(pageInfo.isHasNextPage()) {
  46. builder.append("<a href='"+path+"emps/"+pageInfo.getNextPage()+"'>下一页</a>");
  47. builder.append("&nbsp;&nbsp;");
  48. }else {
  49. builder.append("下一页");
  50. builder.append("&nbsp;&nbsp;");
  51. }
  52.  
  53. //拼接尾页
  54. builder.append("<a href='"+path+"emps/"+pageInfo.getPages()+"'>尾页</a>");
  55. builder.append("&nbsp;&nbsp;");
  56.  
  57. return builder.toString();
  58.  
  59. }
  60.  
  61. }

扩展-PageHelper分页插件的更多相关文章

  1. Springboot 系列(十二)使用 Mybatis 集成 pagehelper 分页插件和 mapper 插件

    前言 在 Springboot 系列文章第十一篇里(使用 Mybatis(自动生成插件) 访问数据库),实验了 Springboot 结合 Mybatis 以及 Mybatis-generator 生 ...

  2. PageHelper分页插件的使用

    大家好!今天写ssm项目实现分页的时候用到pageHelper分页插件,在使用过程中出现了一些错误,因此写篇随笔记录下整个过程 1.背景:在项目的开发的过程中,为了实现所有的功能. 2.目标:实现分页 ...

  3. SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页

    SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页 **SpringBoot+Mybatis使用Pagehelper分页插件自动分页,非常好用,不用在自己去计算和组装了. ...

  4. mybatis pagehelper分页插件使用

    使用过mybatis的人都知道,mybatis本身就很小且简单,sql写在xml里,统一管理和优化.缺点当然也有,比如我们使用过程中,要使用到分页,如果用最原始的方式的话,1.查询分页数据,2.获取分 ...

  5. spring boot 整合pagehelper分页插件

    Spring Boot 整合pagehelper分页插件 测试环境: spring boot  版本 2.0.0.M7 mybatis starter 版本  1.3.1 jdk 1.8 ------ ...

  6. SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件

    原文链接 我们这一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池 ...

  7. 【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法

    spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了. 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一 ...

  8. Mybatis的PageHelper分页插件的PageInfo的属性参数,成员变量的解释,以及页面模板

    作者:个人微信公众号:程序猿的月光宝盒 //当前页 private int pageNum; //每页的数量 private int pageSize; //当前页的数量 private int si ...

  9. 逆向工程文件example完美结合使用PageHelper分页插件及分页不成功原因

    原生的mybatis需要手写sql语句,项目数据库表多了之后,可以让你写sql语句写到手软,于是mybatis官方提供了mybatis-generator:mybatis逆向工程代码生成工具,用于简化 ...

随机推荐

  1. C#接入SMTP邮件服务

    我的个人博客 引入SMTP服务包 //引入邮件服务包using System.Net.Mail;using System.Net; 这两个引用用于C#接入邮件的SMTP服务 控件页面 定时器 为了给用 ...

  2. UML 类之间的关系

    统一建模语言(Unified Modeling Language,UML) 作用:对软件系统进行说明 如果说软件系统是一本小说的话,那么 UML 就是将小说动漫化. 也许你看过这本小说,但是时间一长, ...

  3. Django-----cookie&session

    cookie 保存在用户浏览器端的一个键值对(别人给的凭证) 服务端可以向用户浏览器写cookie 客户端每次发请求会携带cookie去(放在请求头里面) 淘宝的cookie  京东的cookie(h ...

  4. 使用fastai训练的一个性别识别模型

    在学习了python中的一些机器学习的相关模块后,再一次开始了深度学习之旅.不过与上次的TensorFlow框架不同,这一次接触的是fast.ai这样一个东西.这个框架还不稳定,网上也没有相关的中文文 ...

  5. 1.17 想学好Linux,这些习惯必须养成(初学者必读)

    不管是在生活还是工作中,每个人都会逐渐养成一些小习惯.坏习惯一旦形成就很难改正,所在在系统学习 Linux之前,给大家一些建议,刻意去培养一些好的习惯,对自己是很有利的. 学习Linux,要习惯使用命 ...

  6. 文本框字符限制、focus光标定位

    一.为一个元素的所有子元素设置统一样式:.className * { color: #6666 } 二.正则表达式: 1.去除所有HTML标签只保留文字: /<\/?.+?\/?>/2.去 ...

  7. Java学习笔记-基础语法Ⅶ-集合

    集合 集合类特点:提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变 这里需要回顾一下,因为数组和字符串一旦创建,就不可改变,需要区分一下 import java.util.ArrayLi ...

  8. Golang 函数 方法 接口的简单介绍

    函数 函数是基本的代码块,通常我们会将一个功能封装成一个函数,方便我们调用,同时避免代码臃肿复杂. 函数的基本格式 func TestFunc(a int, b string) (int, strin ...

  9. 142_Power BI之同比预测

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 最近刚好在做一个简单同比预测的模型,预测方法很简单,就是累计同比预测,把MTD展示出来. [video widt ...

  10. 【Unity Shader学习笔记】Unity光照基础-漫反射光照

    本代码只适用于平行光. 1.逐顶点漫反射光照 1.1漫反射光照原理 1.2代码实现 在Properties语义块中声明一个漫反射颜色属性 Properties { //漫反射参数,用于调整漫反射效果 ...