添加分页插件,MyBatisPlus3.4以后版本使用:
@Configuration
public class MyBatisConfig {
@Bean
public MybatisPlusInterceptor paginationInterceptor() {
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
// 开启 count 的 join 优化,只针对部分 left join
//这是分页拦截器
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
paginationInnerInterceptor.setOverflow(true);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInnerInterceptor.setMaxLimit(500L);
mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
return mybatisPlusInterceptor;
}
}
Controller:
/*
* @Description: 分页功能
* @Author: WangZiYao
* @Date: 2021/4/21 17:00
*/
@GetMapping(value = "/dynamic_table")
public String dynamicTable(@RequestParam(value = "pn",defaultValue = "1") Integer pn,//获取第几页,页码。
Model model){
//查询数据库所有的数据
List<Person> list = personService.list();
//分页查询的数据pn为第几页,每页显示2条数据
Page<Person> userPage = new Page<>(pn, 2);
//分页查询的结果
Page<Person> page = personService.page(userPage, null);
//List<Person> records = page.getRecords();
model.addAttribute("page",page);
return "table/dynamic_table";
}
/*
* @Description: 删除功能
* @Author: WangZiYao
* @Date: 2021/4/21 17:00
*/
@GetMapping(value = "/person/delete/{id}")
public String deletePerson(@PathVariable("id") Integer id,//获取要删除的记录的id
@RequestParam(value = "pn",defaultValue = "1") Integer pn,//获取要删除时,停留在的页码。
RedirectAttributes ra){//重定向域
ra.addAttribute("pn",pn);//重定向后会被,上面的方法获取到。
personService.removeById(id);
return "redirect:/dynamic_table";
}
<table class="display table table-bordered" id="hidden-table-info">
<thead>
<tr>
<th>#</th>
<th>用户名</th>
<th>性别</th>
<th>年龄</th>
<th>电话</th>
</tr>
</thead>
<tbody>
<tr class="gradeX" th:each="user,stat:${page.records}">//
<td th:text="${stat.count}"></td>
<td th:text="${user.username}"></td>
<td th:text="${user.gender}"></td>
<td th:text="${user.age}"></td>
<td>[[${user.phone}]]</td>
<!--th:href="@{/user/delete/{id}(id=${user.id},pn=${page.current})}"
其中/user/delete/{id} 为跳转到的地址。
(id=${user.id},pn=${page.current})中 id=${user.id} 是为地址中的id赋值,
pn=${page.current} 是 地址追加 当前页码-->
<td><a th:href="@{/person/delete/{id}(id=${user.id},pn=${page.current})}"
class="btn btn-danger btn-sm" type="button">删除</a></td>
</tr>
</tbody>
</table>
<div class="row-fluid">
<div class="span6">
<div class="dataTables_info" id="dynamic-table_info">
当前第[[${page.current}]]页 总计 [[${page.pages}]]页 共[[${page.total}]]条记录
</div>
</div>
<div class="span6">
<div class="dataTables_paginate paging_bootstrap pagination">
<ul>
<li class="prev disabled"><a href="#">← 前一页</a></li>
<!--th:class="${num == page.current?'active':''}" 当num等于当前页,给active用于获取样式,被选中高亮-->
<li th:class="${num == page.current?'active':''}"
th:each="num:${#numbers.sequence(1,page.pages)}" ><!--从第一页开始到最后一页,显示出来每个页码(1234567)-->
<a th:href="@{/dynamic_table(pn=${num})}">[[${num}]]</a><!--给提交地址上加上总页码号-->
</li>
<li class="next disabled"><a href="#">下一页 → </a></li>
</ul>
</div>
</div>
</div>