1. MyBatis分页插件-PageHelper的配置

maven配置文件pom.xml 引入依赖:

        <!--引入PageHelper分页插件 → PageHelper--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.0.0</version></dependency>

mybatis-config.xml全局配置文件中配置拦截器插件:

<!-- plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,objectWrapperFactory?, plugins?, environments?, databaseIdProvider?, mappers?
-->
<plugins><!-- com.github.pagehelper为PageHelper类所在包名 --><plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

2. 分页的使用

  • Service
    public List<Employee> selectByList() {List<Employee> employeeList = employeeMapper.selectByExampleWithDepartment(null);return employeeList;}
  • Controller
    @RequestMapping("/empsList")public String userList(@RequestParam(value = "pn", required = true, defaultValue = "1") Integer pn, HttpServletRequest request, Model model) {//在查询之前调用,传入pn默认值是1,pageSize是5,意思是从第1页开始,每页显示5条记录。PageHelper.startPage(pn, 5);//startPage后面紧跟查询就是一个分页查询。List<Employee> list = employeeService.selectByList();//使用PageInfo包装查询后的结果,只需要将PageInfo交给页面就行。//封装了详细的分页信息,包括我们查询出来的数据userList,传入连续显示的页数5。PageInfo<Employee> page = new PageInfo<Employee>(list, 5);model.addAttribute("pageInfo", page);return "employeeDepartment-list";}            

3.PageInfo.class是插件里的类,非常方便的调用,分页再次提高性能:

    //当前页private int pageNum;//每页的数量private int pageSize;//当前页的数量private int size;//由于startRow和endRow不常用,这里说个具体的用法//可以在页面中"显示startRow到endRow 共size条数据"//当前页面第一个元素在数据库中的行号private int startRow;//当前页面最后一个元素在数据库中的行号private int endRow;//总记录数private long total;//总页数private int pages;//结果集private List<T> list;//前一页private int prePage;//下一页private int nextPage;//是否为第一页private boolean isFirstPage;//是否为最后一页private boolean isLastPage;//是否有前一页private boolean hasPreviousPage;//是否有下一页private boolean hasNextPage;//导航页码数private int navigatePages;//所有导航页号private int[] navigatepageNums;//导航条上的第一页private int navigateFirstPage;//导航条上的最后一页private int navigateLastPage;public PageInfo() {this.isFirstPage = false;this.isLastPage = false;this.hasPreviousPage = false;this.hasNextPage = false;}            

4. 使用spring测试模块提供的测试请求功能

package cn.xiwh.crud.test;import cn.xiwh.crud.bean.Employee;
import com.github.pagehelper.PageInfo;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;import java.util.List;/*** 使用spring测试模块提供的测试请求功能,测试crud请求的正确性* spring4测试时,需要servlet3.0以上的版本支持*/
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations = {"classpath:applicationContext.xml", "classpath:springmvc.xml"})
public class MvcTest {//虚拟的mvc请求,获取到处理结果MockMvc mockMvc;//传入springMVC的IOC。需要在类上加入@WebAppConfiguration注解。@AutowiredWebApplicationContext webApplicationContext;// @Before每次使用初始化@Beforepublic void initMockMvc() {mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();}/*** 测试分页的方法*/@Testpublic void empsTest() throws Exception {//模拟请求拿到返回值MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/emps").param("pn", "10")).andReturn();//请求成功后,请求域中会有pageInfo,我们可以取出pageInfo进行验证。MockHttpServletRequest mockHttpServletRequest = result.getRequest();PageInfo pageInfo = (PageInfo) mockHttpServletRequest.getAttribute("pageInfo");System.out.println("当前页码:" + pageInfo.getPageNum());System.out.println("总页面:" + pageInfo.getPages());System.out.println("总记录数:" + pageInfo.getTotal());System.out.println("在页面连续显示的页码:");int[] page = pageInfo.getNavigatepageNums();for (int pn : page) {System.out.print(pn + " ");}System.out.println();//获取员工数据List<Employee> employees = pageInfo.getList();for (Employee emp : employees) {System.out.println("员工ID:" + emp.getEmpId() + "员工姓名:" + emp.getEmpName() + "员工邮箱:" + emp.getEmail());}}}            

5. 页面使用

1). 头部引用
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2). 页面使用

    <div><c:forEach items="${pageInfo.list}" var="epm"><tr><th> ${epm.empId} </th><th> ${epm.empName} </th><th> ${epm.gender == "M"?"男":"女"}</th><th> ${epm.email}</th><th> ${epm.department.depName}</th></tr></c:forEach></div>
        <%-- 分页文字信息 --%><div class="col-md-6">当前第<span class="badge">${pageInfo.pageNum}</span>页,共有<span class="badge">${pageInfo.pages}</span>页,总计<spanclass="badge">${pageInfo.total}</span>条记录</div>

转载请注明出处:BestEternity亲笔。

PageHelper分页插件及PageInfo介绍及使用相关推荐

  1. PageHelper 分页插件只用Page、不用PageInfo 的写法

    PageHelper 分页插件,学到的写法是得到Page 对象后再转成PageInfo 对象,但Page 是ArrayList 的子类,里面包含了数据列表和分页信息,为什么不能直接用Page 对象做分 ...

  2. 附加:PageHelper分页插件的:Page和PageInfo的区别;

    说明: (1)为什么写本篇博客?: ● 在[Spring Boot电商项目29:商品分类模块八:后台的[分类列表(平铺)]接口:]中,实现分页功能时,使用到了PageHelper分页插件: ● 但是, ...

  3. spring boot+mybatis+thymeleaf+pagehelper分页插件实现分页功能

    文章目录 前言 正文 业务场景 后端 pom.xml application.yml 实体类video.java和User.java----映射VideoMapper.xml----VideoMapp ...

  4. springboot2.0.5集成mybatis(PageHelper分页插件、generator插件使用)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/zab635590867/article ...

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

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

  6. PageHelper 分页插件使用总结

    一个简洁的博客网站:http://lss-coding.top,欢迎大家来访 学习娱乐导航页:http://miss123.top/ 一.认识 PageHelper **官网:**https://pa ...

  7. 使用PageHelper分页插件手动分页,其他查询数据出现串连问题

    在一个需求中,需要在代码中进行分页,于是就选用了PageHelper分页插件进行分页,刚开始的时候忘记了PageHelper分页插件的用法于是我就用: // 设置分页查询条件 PageHelper.s ...

  8. SpringBoot整合PageHelper分页插件

    首先新建项目 第一步: 第二步: 然后手动添加PageHelper分页插件依赖 <dependency><groupId>com.github.pagehelper</g ...

  9. Spring Boot集成pagehelper分页插件

    Spring Boot集成pagehelper分页插件 1.在pom.xml中添加pagehelper依赖 2.修改配置文件 3.修改Controller里面的查询方法 4.返回分页信息 1. 修改U ...

最新文章

  1. Matlab与线性代数 -- 矩阵的特征值与特征向量
  2. 不甘心只做输入工具,搜狗输入法上线AI助手,提供智能服务
  3. (zhuan) Recurrent Neural Network
  4. Linux装多个apache,windows linux如何安装多个apache?
  5. linux自学笔记--nginx基本配置
  6. 曲线 线性回归_机器学习笔记 线性回归
  7. python 实现点击右键用某个程序打开功能_4.PYTHON开发利器之使用VS Code进行python程序开发...
  8. 用iframe transform: scale() 缩小后点不到按钮_“打分”或者“打多少分”用英文可以怎样去表达?...
  9. 存储过程 not supported yet_让我们来看看+Redis如何存储和计算一亿用户的活跃度
  10. 详解 Android 的 Activity 组件
  11. java ext pagesize_更改透明图像的不透明度/更改extgstate字典的值
  12. 使用@ConditionalOnExpression决定是否生效注释
  13. STM32CubeMX使用(三)之DMA使用SPI
  14. 解决PID 4、NT Kernal占用80、445等端口
  15. 副高 职称计算机 上海,高级职称评定
  16. Chrome translate plugins install 谷歌翻译插件安装
  17. 2018年06月 Godaddy自助建站 国内购买域名转入
  18. Python实现海洋测绘基于最小二乘法的潮汐调和分析
  19. 【论文阅读】Rotom: A Meta-Learned Data Augmentation Framework for Entity Matching
  20. 决策树(ID3、C4.5、CART、随机森林)

热门文章

  1. 【算力理解】DMIPS、FLOPS区别和联系
  2. 基于PanoSim5.0虚拟仿真平台的自主代客泊车AVP系统开发教程
  3. 大数据应用项目创新大赛_创新创业大赛聚焦大数据应用 15个项目进入决赛
  4. CentOS6安装certbot
  5. 中南大学计算机考研学硕王道论坛,2019年中南大学计算机考研经验分享(复试+真题)...
  6. 产品经理硬技能——绘制用户旅程图
  7. Google 或于近期恢复对华为 GMS 服务供应
  8. android 直播所需权限,最新抖音强开电脑端直播权限教程,限安卓!(附视频教程)...
  9. 网络故障,到底是交换机的问题还是网线水晶头做法问题?
  10. Google Chrome动了我的奶酪?