saas-export项目-company记录列表的分页显示

末蓝、 2022-11-21 11:23 339阅读 0赞

分页显示功能介绍(图):

在这里插入图片描述

按指定的页号获取数据

在这里插入图片描述

按照指定的每页记录数来获取

在这里插入图片描述

功能分析

分页页面使用到的数据有四整数,一个集合 。参考PageBean类

四个整数分别是

  • 总页数
  • 总记录数
  • 每页记录数
  • 当前页数

一个集合

  • 在数据库中所查询到的list公司记录集合,用来展示的记录

我这边就没有自己来创建pageBean了,直接使用了pagehelper这个分页插件

pagehelper使用

  • (1)依赖

    1. <pagehelper.version>5.1.8</pagehelper.version>
    2. <dependency>
    3. <groupId>com.github.pagehelper</groupId>
    4. <artifactId>pagehelper</artifactId>
    5. <version>${pagehelper.version}</version>
    6. </dependency>
  • (2)配置
    》配置有两种方式

    applicationContext-dao.xml的sqlSessionFactory中添加如下插件配置。

    1. <property name="plugins">
    2. <array>
    3. <bean class="com.github.pagehelper.PageInterceptor">
    4. <property name="properties">
    5. <!--使用下面的方式配置参数,一行配置一个 -->
    6. <!-- pageNum<=0 时会查询第一页 -->
    7. <!-- 指定数据库方言 -->
    8. <value>
    9. reasonable=true
    10. helperDialect=mysql
    11. </value>
    12. </property>
    13. </bean>
    14. </array>
    15. </property>

PageHelper配置的具体位置如图:

在这里插入图片描述

后台代码

TestCompanyService

  1. @Test
  2. public void test05(){
  3. int currentPage = 1;
  4. int pageSize = 3;
  5. //PageInfo 包含四个整数 一个集合
  6. PageInfo<Company> pi = companyService.findPage(currentPage,pageSize);
  7. l.info("test05 pi = "+pi);
  8. }

方法companyService.findPage(currentPage,pageSize);返回的是pageInfo类,我们按Ctrl+鼠标左键进入这个类,看其源码,如下图所示。
在这里插入图片描述

当你配置好pagehelper后,返回的pageInfo类中的属性,都会自动帮我们赋好值,这样,我们需要使用,只需要调用get方法,就可以取到该类中的值。

在这里插入图片描述

ICompanyService

  1. PageInfo<Company> findPage(int currentPage, int pageSize);

CompanyServiceImpl

  1. @Override
  2. public PageInfo<Company> findPage(int currentPage, int pageSize) {
  3. //设置参数
  4. PageHelper.startPage(currentPage,pageSize);
  5. //查询由拦截器在 select * from ss_company 基础上,生成
  6. //select count(*) from ss_company
  7. //select * from ss_company limit (currentPage-1)*pageSize ,pageSize
  8. List<Company> list = iCompanyDao.findAll();
  9. //将集合封装
  10. PageInfo<Company> pi = new PageInfo<>(list);
  11. return pi;
  12. }

这边介绍一个注解@Deprecated

在方法上加@Deprecated,该方法将失效。

在这里插入图片描述

#

CompanyController

  1. @RequestMapping(path="/toList",method = RequestMethod.GET)
  2. public String toList( Integer curr, Integer pageSize, Model model){
  3. //调service获取数据
  4. if (curr == null) {
  5. curr = 1;
  6. }
  7. if (pageSize == null) {
  8. pageSize = 10;
  9. }
  10. PageInfo<Company> pi = iCompanyService.findPage(curr,pageSize);
  11. l.info("toList pi="+pi);
  12. model.addAttribute("pi",pi);
  13. //将数据发到页面,使用标签
  14. return "company/company-list";
  15. }

前台代码

company-list.jsp

在这里插入图片描述

  1. <div class="box-tools pull-right">
  2. <ul class="pagination">
  3. <li>
  4. <a href="#" aria-label="Previous">首页</a>
  5. </li>
  6. <c:if test="${pi.hasPreviousPage}">
  7. <li><a href="#">上一页</a></li>
  8. </c:if>
  9. <c:forEach begin="1" end="${pi.pages}" step="1" varStatus="vs" >
  10. <c:if test="${vs.index == pi.pageNum}">
  11. <li class="active" ><a href="#" >${vs.index}</a></li>
  12. </c:if>
  13. <c:if test="${vs.index != pi.pageNum}">
  14. <li><a href="#">${vs.index}</a></li>
  15. </c:if>
  16. </c:forEach>
  17. <c:if test="${pi.hasNextPage}">
  18. <li><a href="#">下一页</a></li>
  19. </c:if>
  20. <li>
  21. <a href="#" aria-label="Next">尾页</a>
  22. </li>
  23. </ul>
  24. </div>
  25. </div>

jsp代码重用知识点介绍

  • (1)jsp代码是可以重用
  • (2)jsp代码如何重用?
    建立jsp页面 A,保存重用代码
    在当前页面 B 中引入A
    <jsp:include page="A.jsp" />
  • (3)B可以将参数传给A
    <jsp:param name="jack" value="rose"/>
    ${param.jack}

下面举一个具体的例子:

demo02.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>Title</title>
  5. </head>
  6. <body>
  7. <%-- 子标签param,将k-v值传给被include页面--%>
  8. <jsp:include page="demo02_common.jsp">
  9. <jsp:param name="userName" value="李柏霖"/>
  10. <jsp:param name="url" value="http://123.com"/>
  11. </jsp:include>
  12. 我是主要内容
  13. </body>
  14. </html>

页面效果:

在这里插入图片描述

demo02_common.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>Title</title>
  5. </head>
  6. <body>
  7. <h1>我是可以重用的jsp代码部分</h1>
  8. ${param.userName}
  9. ${param.url} //分页需要使用地址参数
  10. </body>
  11. </html>

##页面效果:

在这里插入图片描述

重用传值图解:

在这里插入图片描述

在本saas项目中jsp代码重用- 分页代码

  • (1)分页工具条,肯定是可以重用的

    将company-list.jsp中的分页工具条代码封装到一个单独的page.jsp页面中。

    后期哪个页面需要用这个分页工具条的话,就在页面中引入page.jsp页面。

    1. <!-- /.box-footer-->
    2. <div class="box-footer">
    3. <jsp:include page="../common/page.jsp">
    4. <jsp:param value="${path}/company/toList.do" name="pageUrl"/>
    5. </jsp:include>
    6. </div>

page.jsp

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  3. <html>
  4. <body>
  5. <div class="pull-left">
  6. <div class="form-group form-inline">
  7. 总共${pi.pages} 页,共${pi.total} 条数据。
  8. <select class="form-control">
  9. <option>2</option>
  10. <option>10</option>
  11. <option>15</option>
  12. <option>20</option>
  13. <option>50</option>
  14. <option>80</option>
  15. </select>
  16. </div>
  17. </div>
  18. <div class="box-tools pull-right">
  19. <ul class="pagination" style="margin: 0px;">
  20. <li >
  21. <a href="javascript:goPage(1)" aria-label="Previous">首页</a>
  22. </li>
  23. <c:if test="${pi.pageNum != 1 }">
  24. <li><a href="javascript:goPage(${pi.prePage})">上一页</a></li>
  25. </c:if>
  26. <c:forEach begin="1" end="${pi.pages}" var="i">
  27. <li class="paginate_button ${pi.pageNum==i ? 'active':''}"><a href="javascript:goPage(${i})">${i}</a></li>
  28. </c:forEach>
  29. <c:if test="${pi.pageNum != pi.pages }">
  30. <li><a href="javascript:goPage(${pi.nextPage})">下一页</a></li>
  31. </c:if>
  32. <li>
  33. <a href="javascript:goPage(${pi.pages})" aria-label="Next">尾页</a>
  34. </li>
  35. </ul>
  36. </div>
  37. <form id="pageForm" action="${param.pageUrl}" method="post">
  38. <input type="hidden" name="curr" id="curr">
  39. <input type="hidden" name="pageSize" id="pageSize">
  40. </form>
  41. <script> function goPage(page) { document.getElementById("curr").value = page //curr=2 document.getElementById("pageSize").value = ${ pi.pageSize} //pageSize=3 document.getElementById("pageForm").submit() } </script>
  42. </body>
  43. </html>
  • (2)重新修改页面的el表达式

效果:(为了测试,我将CompanyController中的默认pageSize=2)

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,339人围观)

还没有评论,来说两句吧...

相关阅读