组团学

SSM整合-PageHelper分页

阅读 (833907)

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>
需要 登录 才可以提问哦