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