Tymeleaf文档

    添加分页插件,MyBatisPlus3.4以后版本使用:
    image.png

    1. @Configuration
    2. public class MyBatisConfig {
    3. @Bean
    4. public MybatisPlusInterceptor paginationInterceptor() {
    5. MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
    6. // 开启 count 的 join 优化,只针对部分 left join
    7. //这是分页拦截器
    8. PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
    9. // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
    10. paginationInnerInterceptor.setOverflow(true);
    11. // 设置最大单页限制数量,默认 500 条,-1 不受限制
    12. paginationInnerInterceptor.setMaxLimit(500L);
    13. mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
    14. return mybatisPlusInterceptor;
    15. }
    16. }

    Controller:

    1. /*
    2. * @Description: 分页功能
    3. * @Author: WangZiYao
    4. * @Date: 2021/4/21 17:00
    5. */
    6. @GetMapping(value = "/dynamic_table")
    7. public String dynamicTable(@RequestParam(value = "pn",defaultValue = "1") Integer pn,//获取第几页,页码。
    8. Model model){
    9. //查询数据库所有的数据
    10. List<Person> list = personService.list();
    11. //分页查询的数据pn为第几页,每页显示2条数据
    12. Page<Person> userPage = new Page<>(pn, 2);
    13. //分页查询的结果
    14. Page<Person> page = personService.page(userPage, null);
    15. //List<Person> records = page.getRecords();
    16. model.addAttribute("page",page);
    17. return "table/dynamic_table";
    18. }
    19. /*
    20. * @Description: 删除功能
    21. * @Author: WangZiYao
    22. * @Date: 2021/4/21 17:00
    23. */
    24. @GetMapping(value = "/person/delete/{id}")
    25. public String deletePerson(@PathVariable("id") Integer id,//获取要删除的记录的id
    26. @RequestParam(value = "pn",defaultValue = "1") Integer pn,//获取要删除时,停留在的页码。
    27. RedirectAttributes ra){//重定向域
    28. ra.addAttribute("pn",pn);//重定向后会被,上面的方法获取到。
    29. personService.removeById(id);
    30. return "redirect:/dynamic_table";
    31. }
    1. <table class="display table table-bordered" id="hidden-table-info">
    2. <thead>
    3. <tr>
    4. <th>#</th>
    5. <th>用户名</th>
    6. <th>性别</th>
    7. <th>年龄</th>
    8. <th>电话</th>
    9. </tr>
    10. </thead>
    11. <tbody>
    12. <tr class="gradeX" th:each="user,stat:${page.records}">//
    13. <td th:text="${stat.count}"></td>
    14. <td th:text="${user.username}"></td>
    15. <td th:text="${user.gender}"></td>
    16. <td th:text="${user.age}"></td>
    17. <td>[[${user.phone}]]</td>
    18. <!--th:href="@{/user/delete/{id}(id=${user.id},pn=${page.current})}"
    19. 其中/user/delete/{id} 为跳转到的地址。
    20. (id=${user.id},pn=${page.current})中 id=${user.id} 是为地址中的id赋值,
    21. pn=${page.current} 是 地址追加 当前页码-->
    22. <td><a th:href="@{/person/delete/{id}(id=${user.id},pn=${page.current})}"
    23. class="btn btn-danger btn-sm" type="button">删除</a></td>
    24. </tr>
    25. </tbody>
    26. </table>
    27. <div class="row-fluid">
    28. <div class="span6">
    29. <div class="dataTables_info" id="dynamic-table_info">
    30. 当前第[[${page.current}]]页 总计 [[${page.pages}]]页 共[[${page.total}]]条记录
    31. </div>
    32. </div>
    33. <div class="span6">
    34. <div class="dataTables_paginate paging_bootstrap pagination">
    35. <ul>
    36. <li class="prev disabled"><a href="#">← 前一页</a></li>
    37. <!--th:class="${num == page.current?'active':''}" 当num等于当前页,给active用于获取样式,被选中高亮-->
    38. <li th:class="${num == page.current?'active':''}"
    39. th:each="num:${#numbers.sequence(1,page.pages)}" ><!--从第一页开始到最后一页,显示出来每个页码(1234567)-->
    40. <a th:href="@{/dynamic_table(pn=${num})}">[[${num}]]</a><!--给提交地址上加上总页码号-->
    41. </li>
    42. <li class="next disabled"><a href="#">下一页 → </a></li>
    43. </ul>
    44. </div>
    45. </div>
    46. </div>

    image.png