之前看mybatis的时候用过,有段时间没用,最近写分页发现有点忘了,就当做个简单的回顾
主要参考
pagehelper官方文档
1.引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
2.代码中引用
@GetMapping("/test")
public String list(Model model,@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum){
//按照排序字段 倒序 排序
String orderBy = "id desc";
PageHelper.startPage(pageNum,10,orderBy);
List<Type> list = typeService.getAllType();
// 用PageInfo对结果进行包装
PageInfo<Type> pageInfo = new PageInfo<>(list);
model.addAttribute("pageInfo",pageInfo);
return "test";
}
3.前端获取分页结果
我这里使用了thymeleaf简单实现一下
这里用了th:each遍历的Stat变量,目的是获取迭代项的状态
<tr th:each="type,Stat : ${pageInfo.list}">
<td th:text="${Stat.count}">1</td>
<td th:text="${type.name}">项目</td>
</tr>
<li th:if="${pageInfo.hasPreviousPage}">
<a th:href="@{/admin/types(pageNum=${pageInfo.pageNum}-1)}" class="item">上一页</a>
</li>
<li th:if="${pageInfo.hasNextPage}">
<a th:href="@{/admin/types(pageNum=${pageInfo.pageNum}+1)}" class="item">下一页</a>
</li>
<div>
当前第 [[${pageInfo.pageNum}]]页,共 [[${pageInfo.pages}]] 页.一共 [[${pageInfo.total}]] 条记录
</div>
PS:
- index 属性:当前迭代索引,从0开始
- count 属性:当前的迭代计数,从1开始
- size 属性:迭代变量中元素的总量
- current 属性:每次迭代的 iter 变量,即当前遍历到的元素
- even/odd 布尔属性:当前的迭代是偶数还是奇数。
- first布尔属性:当前的迭代是否是第⼀个迭代
- last 布尔属性:当前的迭代是否是最后⼀个迭代。
效果:
简单实现了分页功能