PageHelper分页插件及PageInfo介绍及使用
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介绍及使用相关推荐
- PageHelper 分页插件只用Page、不用PageInfo 的写法
PageHelper 分页插件,学到的写法是得到Page 对象后再转成PageInfo 对象,但Page 是ArrayList 的子类,里面包含了数据列表和分页信息,为什么不能直接用Page 对象做分 ...
- 附加:PageHelper分页插件的:Page和PageInfo的区别;
说明: (1)为什么写本篇博客?: ● 在[Spring Boot电商项目29:商品分类模块八:后台的[分类列表(平铺)]接口:]中,实现分页功能时,使用到了PageHelper分页插件: ● 但是, ...
- spring boot+mybatis+thymeleaf+pagehelper分页插件实现分页功能
文章目录 前言 正文 业务场景 后端 pom.xml application.yml 实体类video.java和User.java----映射VideoMapper.xml----VideoMapp ...
- springboot2.0.5集成mybatis(PageHelper分页插件、generator插件使用)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/zab635590867/article ...
- Springboot 系列(十二)使用 Mybatis 集成 pagehelper 分页插件和 mapper 插件
前言 在 Springboot 系列文章第十一篇里(使用 Mybatis(自动生成插件) 访问数据库),实验了 Springboot 结合 Mybatis 以及 Mybatis-generator 生 ...
- PageHelper 分页插件使用总结
一个简洁的博客网站:http://lss-coding.top,欢迎大家来访 学习娱乐导航页:http://miss123.top/ 一.认识 PageHelper **官网:**https://pa ...
- 使用PageHelper分页插件手动分页,其他查询数据出现串连问题
在一个需求中,需要在代码中进行分页,于是就选用了PageHelper分页插件进行分页,刚开始的时候忘记了PageHelper分页插件的用法于是我就用: // 设置分页查询条件 PageHelper.s ...
- SpringBoot整合PageHelper分页插件
首先新建项目 第一步: 第二步: 然后手动添加PageHelper分页插件依赖 <dependency><groupId>com.github.pagehelper</g ...
- Spring Boot集成pagehelper分页插件
Spring Boot集成pagehelper分页插件 1.在pom.xml中添加pagehelper依赖 2.修改配置文件 3.修改Controller里面的查询方法 4.返回分页信息 1. 修改U ...
最新文章
- Matlab与线性代数 -- 矩阵的特征值与特征向量
- 不甘心只做输入工具,搜狗输入法上线AI助手,提供智能服务
- (zhuan) Recurrent Neural Network
- Linux装多个apache,windows linux如何安装多个apache?
- linux自学笔记--nginx基本配置
- 曲线 线性回归_机器学习笔记 线性回归
- python 实现点击右键用某个程序打开功能_4.PYTHON开发利器之使用VS Code进行python程序开发...
- 用iframe transform: scale() 缩小后点不到按钮_“打分”或者“打多少分”用英文可以怎样去表达?...
- 存储过程 not supported yet_让我们来看看+Redis如何存储和计算一亿用户的活跃度
- 详解 Android 的 Activity 组件
- java ext pagesize_更改透明图像的不透明度/更改extgstate字典的值
- 使用@ConditionalOnExpression决定是否生效注释
- STM32CubeMX使用(三)之DMA使用SPI
- 解决PID 4、NT Kernal占用80、445等端口
- 副高 职称计算机 上海,高级职称评定
- Chrome translate plugins install 谷歌翻译插件安装
- 2018年06月 Godaddy自助建站 国内购买域名转入
- Python实现海洋测绘基于最小二乘法的潮汐调和分析
- 【论文阅读】Rotom: A Meta-Learned Data Augmentation Framework for Entity Matching
- 决策树(ID3、C4.5、CART、随机森林)
热门文章
- 【算力理解】DMIPS、FLOPS区别和联系
- 基于PanoSim5.0虚拟仿真平台的自主代客泊车AVP系统开发教程
- 大数据应用项目创新大赛_创新创业大赛聚焦大数据应用 15个项目进入决赛
- CentOS6安装certbot
- 中南大学计算机考研学硕王道论坛,2019年中南大学计算机考研经验分享(复试+真题)...
- 产品经理硬技能——绘制用户旅程图
- Google 或于近期恢复对华为 GMS 服务供应
- android 直播所需权限,最新抖音强开电脑端直播权限教程,限安卓!(附视频教程)...
- 网络故障,到底是交换机的问题还是网线水晶头做法问题?
- Google Chrome动了我的奶酪?