当前位置:   article > 正文

分页插件功能的实现_page.getpages()

page.getpages()

前言:本人是刚学习java后端不久,所以通过记录一下平时所学知识,方便日后的复习,如果有出错的地方,还望包含。

1、因为使用分页插件,所以整个功能的实现也是非常的简单

首先是导入分页插件相关的坐标,从而可以使用分页插件相关的类。

  1. <!-- 分页插件 -->
  2. <dependency>
  3. <groupId>com.github.pagehelper</groupId>
  4. <artifactId>pagehelper-spring-boot-starter</artifactId>
  5. <version>1.3.0</version>
  6. </dependency>

2、在查找接口中,添加对应的插件功能,提供几个参数供前端进行使用。

  1. @Autowired
  2. private StudentServiceImpl studentService;
  3. @RequestMapping("/findAllStudent")
  4. public String findAllStudent(Model model,@RequestParam(required=true,value="pageNum",defaultValue="1") Integer pageNum){
  5. Page<Student> page = PageHelper.startPage(pageNum, 6); //设置页面的大小
  6. List<Student> list=studentService.findAllStudent();
  7. model.addAttribute("list",list);
  8. model.addAttribute("pageNum", pageNum);
  9. model.addAttribute("totalPages", page.getPages());
  10. return "result";
  11. }

整个分页插件的使用部分,就这些,其他的配置什么的都是插件本身的底层自身实现的,我们只需要提供给前端几个简单的参数供前端使用就行。

相比于后端,前端的使用更加的复杂。

3、前端部分的页面

  1. <!--页码,虽然idea报错,但是没事儿-->
  2. <div class="page" th:if="${totalPages>=1} " style="background: white">
  3. <!-- 页数较少时填充 -->
  4. <div th:if="${totalPages<8}" th:each="i:${#numbers.sequence(1, (9-totalPages)/2)}" class="page-item fl"></div>
  5. <!--上一页-->
  6. <div class="page-item fl bg-color-f2f2f2">
  7. <a th:href="@{'/findAllStudent/?pageNum='+${pageNum-1}}">
  8. <i class="layui-icon layui-icon-prev"></i>
  9. </a>
  10. </div>
  11. <!--首页-->
  12. <div class="page-item fl bg-color-f2f2f2" th:style="(${pageNum==1} ? 'background-color:#ffd84d !important;')">
  13. <a th:href="@{'/findAllStudent/?pageNum=1'}">1</a>
  14. </div>
  15. <!--页数过多时的省略号-->
  16. <div class="page-item fl" th:if="${totalPages > 9 && pageNum > 5}">
  17. <img alt="省略" th:src="@{/images/ellipsis.png}"/>
  18. </div>
  19. <!--中间部分的页面显示-->
  20. <div th:if="${totalPages<=9 && totalPages>=3}" th:each="i:${#numbers.sequence(2, totalPages-1)}"
  21. class="page-item fl bg-color-f2f2f2" th:style="(${i==pageNum} ? 'background-color:#ffd84d !important;')">
  22. <a th:href="@{'/findAllStudent/?pageNum='+${i}}" th:text="${i}"></a>
  23. </div>
  24. <div th:if="${totalPages > 9}">
  25. <div th:if="${pageNum <= 5}" th:each="i:${#numbers.sequence(2, 7)}"
  26. class="page-item fl bg-color-f2f2f2" th:style="(${i==pageNum} ? 'background-color:#ffd84d !important;')">
  27. <a th:href="@{'/findAllStudent/?pageNum='+${i}}" th:text="${i}"></a>
  28. </div>
  29. <div th:if="${pageNum >= (totalPages-4)}" th:each="i:${#numbers.sequence(totalPages-6, totalPages-1)}"
  30. class="page-item fl bg-color-f2f2f2" th:style="(${i==pageNum} ? 'background-color:#ffd84d !important;')">
  31. <a th:href="@{'/findAllStudent/?pageNum='+${i}}" th:text="${i}"></a>
  32. </div>
  33. <div th:if="${pageNum>5 && pageNum < (totalPages-4)}" th:each="i:${#numbers.sequence(totalPages-6, totalPages-1)}"
  34. class="page-item fl bg-color-f2f2f2" th:style="(${i==pageNum} ? 'background-color:#ffd84d !important;')">
  35. <a th:href="@{'/findAllStudent/?pageNum='+${i}}" th:text="${i}"></a>
  36. </div>
  37. </div>
  38. <!--页数过多时的省略号-->
  39. <div th:if="${totalPages > 9 && pageNum < (totalPages-4)}" class="page-item fl">
  40. <img alt="省略" th:src="@{/images/ellipsis.png}"/>
  41. </div>
  42. <!--尾页-->
  43. <div th:if="${totalPages > 1}">
  44. <div class="page-item fl bg-color-f2f2f2" th:style="(${pageNum==totalPages} ? 'background-color:#ffd84d !important;')">
  45. <a th:href="@{'/findAllStudent/?pageNum='+${totalPages}}" th:text="${totalPages}"></a>
  46. </div>
  47. </div>
  48. <!--下一页-->
  49. <div class="page-item fl bg-color-f2f2f2">
  50. <a th:href="@{'/findAllStudent/?pageNum='+${pageNum+1}}">
  51. <i class="layui-icon layui-icon-next"></i>
  52. </a>
  53. </div>
  54. <!-- 页数较少时填充 -->
  55. <div th:if="${totalPages<9}" th:each="i:${#numbers.sequence(1, (9-totalPages)/2)}" class="page-item fl"></div>
  56. </div>

注释:将这个界面放在你的展示页面下面就可以生效。

下面是较为完整的前端代码:

  1. <body >
  2. <div class="layui-form" >
  3. <table class="layui-table">
  4. <colgroup>
  5. <col width="100">
  6. <col width="300">
  7. <col width="150">
  8. <col>
  9. </colgroup>
  10. <thead>
  11. <tr>
  12. <th>编号</th>
  13. <th>姓名</th>
  14. <th>性别</th>
  15. <th>年龄</th>
  16. <th>创建时间</th>
  17. <th>更新时间</th>
  18. <th>操作方式</th>
  19. </tr>
  20. </thead>
  21. <tbody id="tbody">
  22. <tr th:each="item:${list}" th:id="'item-'+${item.getStudentId()}">
  23. <td th:text="${item.getStudentId()}"></td>
  24. <td th:text="${item.getStudentName()}" th:id="'name-'+${item.getStudentId()}"></td>
  25. <td th:text="${item.getStudentSex()}" th:id="'sex-'+${item.getStudentId()}"></td>
  26. <td th:text="${item.getStudentAge()}" th:id="'name-'+${item.getStudentId()}"></td>
  27. <td th:text="${item.getCreateTime()}" th:id="'name-'+${item.getStudentId()}"></td>
  28. <td th:text="${item.getUpdateTime()}" th:id="'name-'+${item.getStudentId()}"></td>
  29. <td>
  30. <a href="/update" shiro:hasPermission="svip">
  31. <button type="button" class="layui-btn" >
  32. <i class="layui-icon"></i></button>
  33. </a>
  34. <a shiro:hasPermission="svip">
  35. <button type="button" class="layui-btn layui-btn-danger" th:onclick="|deleteStudent(${item.getStudentId()})|">
  36. <i class="layui-icon"></i></button>
  37. </a>
  38. </td>
  39. </tr>
  40. </tbody>
  41. </table>
  42. </div>
  43. <!--页码,虽然idea报错,但是没事儿-->
  44. <div class="page" th:if="${totalPages>=1} " style="background: white">
  45. <!-- 页数较少时填充 -->
  46. <div th:if="${totalPages<8}" th:each="i:${#numbers.sequence(1, (9-totalPages)/2)}" class="page-item fl"></div>
  47. <!--上一页-->
  48. <div class="page-item fl bg-color-f2f2f2">
  49. <a th:href="@{'/findAllStudent/?pageNum='+${pageNum-1}}">
  50. <i class="layui-icon layui-icon-prev"></i>
  51. </a>
  52. </div>
  53. <!--首页-->
  54. <div class="page-item fl bg-color-f2f2f2" th:style="(${pageNum==1} ? 'background-color:#ffd84d !important;')">
  55. <a th:href="@{'/findAllStudent/?pageNum=1'}">1</a>
  56. </div>
  57. <!--页数过多时的省略号-->
  58. <div class="page-item fl" th:if="${totalPages > 9 && pageNum > 5}">
  59. <img alt="省略" th:src="@{/images/ellipsis.png}"/>
  60. </div>
  61. <!--中间部分的页面显示-->
  62. <div th:if="${totalPages<=9 && totalPages>=3}" th:each="i:${#numbers.sequence(2, totalPages-1)}"
  63. class="page-item fl bg-color-f2f2f2" th:style="(${i==pageNum} ? 'background-color:#ffd84d !important;')">
  64. <a th:href="@{'/findAllStudent/?pageNum='+${i}}" th:text="${i}"></a>
  65. </div>
  66. <div th:if="${totalPages > 9}">
  67. <div th:if="${pageNum <= 5}" th:each="i:${#numbers.sequence(2, 7)}"
  68. class="page-item fl bg-color-f2f2f2" th:style="(${i==pageNum} ? 'background-color:#ffd84d !important;')">
  69. <a th:href="@{'/findAllStudent/?pageNum='+${i}}" th:text="${i}"></a>
  70. </div>
  71. <div th:if="${pageNum >= (totalPages-4)}" th:each="i:${#numbers.sequence(totalPages-6, totalPages-1)}"
  72. class="page-item fl bg-color-f2f2f2" th:style="(${i==pageNum} ? 'background-color:#ffd84d !important;')">
  73. <a th:href="@{'/findAllStudent/?pageNum='+${i}}" th:text="${i}"></a>
  74. </div>
  75. <div th:if="${pageNum>5 && pageNum < (totalPages-4)}" th:each="i:${#numbers.sequence(totalPages-6, totalPages-1)}"
  76. class="page-item fl bg-color-f2f2f2" th:style="(${i==pageNum} ? 'background-color:#ffd84d !important;')">
  77. <a th:href="@{'/findAllStudent/?pageNum='+${i}}" th:text="${i}"></a>
  78. </div>
  79. </div>
  80. <!--页数过多时的省略号-->
  81. <div th:if="${totalPages > 9 && pageNum < (totalPages-4)}" class="page-item fl">
  82. <img alt="省略" th:src="@{/images/ellipsis.png}"/>
  83. </div>
  84. <!--尾页-->
  85. <div th:if="${totalPages > 1}">
  86. <div class="page-item fl bg-color-f2f2f2" th:style="(${pageNum==totalPages} ? 'background-color:#ffd84d !important;')">
  87. <a th:href="@{'/findAllStudent/?pageNum='+${totalPages}}" th:text="${totalPages}"></a>
  88. </div>
  89. </div>
  90. <!--下一页-->
  91. <div class="page-item fl bg-color-f2f2f2">
  92. <a th:href="@{'/findAllStudent/?pageNum='+${pageNum+1}}">
  93. <i class="layui-icon layui-icon-next"></i>
  94. </a>
  95. </div>
  96. <!-- 页数较少时填充 -->
  97. <div th:if="${totalPages<9}" th:each="i:${#numbers.sequence(1, (9-totalPages)/2)}" class="page-item fl"></div>
  98. </div>
  99. <script th:src="@{https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js}"></script>
  100. <script th:src="@{https://www.layuicdn.com/layui-v2.5.7/layui.js}"></script>
  101. <script>
  102. function deleteStudent(id) {
  103. $.ajax({
  104. url: "/deleteStudent",
  105. type: "post",
  106. data: {
  107. id: id
  108. },
  109. success: function (data) {
  110. let Jdata = JSON.parse(data);
  111. if (Jdata.code === "200") {
  112. $("#item-"+id).remove();
  113. }
  114. }
  115. })
  116. }
  117. function updateStudentForUI(id) {
  118. let td_name = $("#name-"+id)
  119. let name = td_name.text()
  120. td_name.empty()
  121. td_name.append("<input id='td-name-input-"+id+"' type='text' name='name' value='"+name+"' style='height: 26px;'>")
  122. td_name.append("<button type=\"button\" class=\"layui-btn\" onclick=\"updateStudent("+id+")\"><i class=\"layui-icon\"></i></button>")
  123. }
  124. // function updateStudent(id) {
  125. // let td_name = $("#name-"+id)
  126. // let name = $("#td-name-input-"+id).val();
  127. // $.ajax({
  128. // url: "/updateStudent",
  129. // type: "post",
  130. // data: {
  131. // id: id,
  132. // name: name,
  133. // sex:sex,
  134. // age:age,
  135. // createTime:time;
  136. // },
  137. // success: function (data) {
  138. // let Jdata = JSON.parse(data);
  139. // if (Jdata.code === "200") {
  140. // td_name.empty();
  141. // td_name.text(name)
  142. // }
  143. // }
  144. // })
  145. // }
  146. </script>
  147. </body>

注释:这个是查询学生表的功能,会展示一个layui的界面,查询数据库中的所有的学生表,查询的功能和删除的功能很完善,但是更新的功能有缺陷,还没有时间去解决。

layui引用的是cdn的样式。

下面是是用的cdn,如果有本地的也可以使用本地的。

  1. <!DOCTYPE html>
  2. <!--配置thymeleaf的命名空间-->
  3. <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:clear="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Title</title>
  7. <!-- 引用layui的css样式 -->
  8. <link rel="stylesheet" type="text/css" th:href="@{https://www.layuicdn.com/layui/css/layui.css}" />
  9. <!-- 引用ajax-->
  10. <script th:src="@{https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js}"></script>
  11. <!-- 引用js-->
  12. <script th:src="@{https://www.layuicdn.com/layui-v2.5.7/layui.js}"></script>

注释:其他的样式不显示,就是本地的样式,想要使用可以改成自己的本地的样式。

感受,有了分页插件以后,分页很简单,想要移植到其他的地方,也是很简单,只需要改一下参数。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/860798
推荐阅读
相关标签
  

闽ICP备14008679号