前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSM整合-PageHelper分页

SSM整合-PageHelper分页

作者头像
星哥玩云
发布2022-09-15 13:55:30
3770
发布2022-09-15 13:55:30
举报
文章被收录于专栏:开源部署开源部署

1、PageHelper普通分页

1.1、PageHelper分页概述

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

1.2、完成PageHelper分页

1.2.1、加载jar包

pom.xml

代码语言:javascript
复制
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.10</version>
</dependency>
1.2.2、配置分页面插件

applicationContext.xml

代码语言:javascript
复制
<!--配置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

代码语言:javascript
复制
@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

代码语言:javascript
复制
 @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的分页计算结果很多,部分经常用到的属性如下:

代码语言:javascript
复制
当前页   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

代码语言:javascript
复制
<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、分页问题

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

解决方案:

修改删除超链接

代码语言:javascript
复制
<a href="${pageContext.request.contextPath}/deleteStudents?sid=${students.sid}&pageNum=${pageInfo.pageNum}&pageSize=2">删除</a>

修改控制器

代码语言:javascript
复制
 @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

代码语言:javascript
复制
@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

代码语言:javascript
复制
<%@ 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>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、PageHelper普通分页
    • 1.1、PageHelper分页概述
      • 1.2、完成PageHelper分页
        • 1.2.1、加载jar包
        • 1.2.2、配置分页面插件
        • 1.2.3、修改控制器
        • 1.2.4、PageInfo对象
        • 1.2.5、编写分页页面
        • 1.2.6、分页问题
    • 2、PageHelper查询分页
      • 2.1、编写控制器
        • 2.2、编写页面
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档