阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

SSM整合-PageHelper分页

87次阅读
没有评论

共计 5019 个字符,预计需要花费 13 分钟才能阅读完成。

1、PageHelper 普通分页

1.1、PageHelper 分页概述

PageHelper:是中国的开源的 mybatis 分页插件, 通过该插件可以非常简单的实现分页功能;

1.2、完成 PageHelper 分页

1.2.1、加载 jar 包

pom.xml

<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.10</version> </dependency>

1.2.2、配置分页面插件

applicationContext.xml

<!-- 配置 sqlSessionFactory 工厂 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- 在 sqlSessionFactory 中引入该插件 --> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <value> helperDialect=mysql </value> </property> </bean> </array> </property> </bean>

1.2.3、修改控制器

ManagerController.java

@RequestMapping("/loginManager") public String loginManager(Manager m, Model model, HttpSession session, @RequestParam(defaultValue = "1")Integer pageNum, @RequestParam(defaultValue="2")Integer pageSize){List<Manager> list=iManagerServcie.loginManager(m); if(list.size()>0){PageHelper.startPage(pageNum,pageSize); List<Students> list1=iStudentsService.findAll(pageNum,pageSize); PageInfo<Students> pageInfo=new PageInfo<Students>(list1); session.setAttribute("uname",m.getUname()); model.addAttribute("pageInfo",pageInfo); //model.addAttribute("list",list1); return "index"; }else{return "login"; } }

StudentsController.java

@RequestMapping("/findAll") public String findAll(Model model, @RequestParam(defaultValue = "1")Integer pageNum,@RequestParam(defaultValue="2")Integer pageSize){PageHelper.startPage(pageNum,pageSize); List<Students> list=iStudentsService.findAll(pageNum,pageSize); PageInfo<Students> pageInfo=new PageInfo<Students>(list); model.addAttribute("pageInfo",pageInfo); //model.addAttribute("list",list); return "index"; }

1.2.4、PageInfo 对象

PageInfo 的分页计算结果很多,部分经常用到的属性如下:

当前页 private int pageNum; 每页的数量 private int pageSize; 当前页的数量 private int size; 当前页面第一个元素在数据库中的行号 private int startRow; 当前页面最后一个元素在数据库中的行号 private int endRow; 总记录数 private long total; 总页数 private int pages; 结果集 private List<T> list; 第一页 private int firstPage; 前一页 private int prePage; 是否为第一页 private boolean isFirstPage = false; 是否为最后一页 private boolean isLastPage = false; 是否有前一页 private boolean hasPreviousPage = false; 是否有下一页 private boolean hasNextPage = false; 导航页码数 private int navigatePages; 所有导航页号 private int[] navigatepageNums;

1.2.5、编写分页页面

index.jsp

<tr> <td colspan="5" > <div style="line-height: 20px;height: 20px;text-align: center;font-size: 14px"> 共 [${pageInfo.total} ] 条记录 | 共 [${pageInfo.pages} ] 页 <c:if test="${pageInfo.pageNum > 1}"> [<A href="${pageContext.request.contextPath}/findAll?pageNum=${pageInfo.pageNum-1}&pageSize=2"> 前一页 </A> ] </c:if> <c:if test="${pageInfo.pageNum <=1}"> [前一页] </c:if> | 当前第 [${pageInfo.pageNum} ] 页 <c:if test="${pageInfo.pageNum < pageInfo.pages}"> |[<A href="${pageContext.request.contextPath}/findAll?pageNum=${pageInfo.pageNum+1}&pageSize=2"> 后一页 </A> ] </c:if> <c:if test="${pageInfo.pageNum >= pageInfo.pages}"> [后一页] </c:if> </div> </td> </tr>

1.2.6、分页问题

当删除完记录时,在次查询数据回到了首页。

解决方案:

修改删除超链接

<a href="${pageContext.request.contextPath}/deleteStudents?sid=${students.sid}&pageNum=${pageInfo.pageNum}&pageSize=2"> 删除 </a>

修改控制器

@RequestMapping("/deleteStudents") public String deleteSudents(int sid,@RequestParam(defaultValue = "1")Integer pageNum,@RequestParam(defaultValue="2")Integer pageSize){iStudentsService.deleteStudents(sid); return "forward:findAll"; }

2、PageHelper 查询分页

2.1、编写控制器

StudentsController.java

@RequestMapping("/findBySname") public String findBySname(Model model,String sname,@RequestParam(defaultValue = "1")Integer pageNum,@RequestParam(defaultValue="2")Integer pageSize){PageHelper.startPage(pageNum,pageSize); List<Students> list=iStudentsService.findByName("%"+sname+"%"); PageInfo<Students> pageInfo=new PageInfo<Students>(list); model.addAttribute("pageInfo",pageInfo); model.addAttribute("sname",sname); return "forward:/index.jsp"; }

2.2、编写页面

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title> 天易 IT 学院学生信息查询系统 </title> </head> <body> <center> <h3> 天易 IT 学院学生信息查询系统 </h3> <form action="${pageContext.request.contextPath}/findBySname?pageNum=${pageInfo.pageNum}&pageSize=2" method="post"> 请输入学生姓名:<input type="text" name="sname" value="${sname}"><input type="submit" value="查看学生信息"> </form> <table> <c:if test="${pageInfo!=null}"> <tr><th> 学员 ID</th><th> 学员姓名 </th><th> 学员性别 </th><th> 学员年龄 </th></tr> <c:forEach items="${pageInfo.list}" var="students"> <tr><td>${students.sid}</td><td>${students.sname}</td><td>${students.sex}</td><td>${students.age}</td></tr> </c:forEach> <tr> <td colspan="5" > <div style="line-height: 20px;height: 20px;text-align: center;font-size: 14px"> 共 [${pageInfo.total} ] 条记录 | 共 [${pageInfo.pages} ] 页 | <c:if test="${pageInfo.pageNum > 1}"> [<A href="${pageContext.request.contextPath}/findBySname?sname=${sname}&pageNum=${pageInfo.pageNum-1}&pageSize=2"> 前一页 </A> ] </c:if> <c:if test="${pageInfo.pageNum <=1}"> [前一页] </c:if> | 当前第 [${pageInfo.pageNum} ] 页 <c:if test="${pageInfo.pageNum < pageInfo.pages}"> |[<A href="${pageContext.request.contextPath}/findBySname?sname=${sname}&pageNum=${pageInfo.pageNum+1}&pageSize=2"> 后一页 </A> ] </c:if> <c:if test="${pageInfo.pageNum >= pageInfo.pages}"> [后一页] </c:if> </div> </td> </tr> </c:if> </table> </center> </body> </html>

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-06-06发表,共计5019字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中