在使用Springboot+jpa分页过程中发现一个问题,springboot默认的分页页码从0页开始,实际使用过程极不方便,网上查了资料特别麻烦,这边采用的是前端采用正常从1开始的页码,后台查询使用前端页码-1,pageable默认从0页开始的查询方式。
具体方法如下
controlle编写方法:根据前端传递页码-1方式,进行后端分页查询
@RequestMapping(value="/commentList",method=RequestMethod.GET) public String blogList(Model model,Integer pageNum){ //后端判断页码,为空赋值为1,有值择-1查询 if(pageNum==null){ pageNum=1; } Sort sort=new Sort(Sort.Direction.DESC,"id"); Pageable pageable=new PageRequest(pageNum-1,10,sort); model.addAttribute("page", commentService.listComment(pageable)); return "admin/comment"; }
serviceImpl编写方法:
public Page<Comment> listComment(Pageable pageable) { return commentRepository.findAll(pageable); }
前端分页展示:
<th colspan="9">共【<span th:text="${page.totalElements}"></span>】条记录 <div class="ui right floated pagination menu"> //显示首页按钮,默认1 <a class="item" th:text="首页" th:href="@{/admin/blogList(pageNum=1)}"></a> //显示上一页按钮 <a class="icon item" th:href="@{/admin/blogList(pageNum=${page.number})}" th:unless="${page.first}" th:text="上一页"></a> //显示遍历页码,从1开始 <th:block th:each="pageNum:${#numbers.sequence(1,page.totalPages)}"> //选中状态添加激活效果 <a class="active item" th:if="${pageNum}==${page.number}+1" th:text="${pageNum}" th:href="@{/admin/blogList(pageNum=${pageNum})}"></a> <a class="item" th:if="${pageNum} ne ${page.number}+1" th:text="${pageNum}" th:href="@{/admin/blogList(pageNum=${pageNum})}"></a> </th:block> //下一页按钮 <a class="icon item" th:href="@{/admin/blogList(pageNum=${page.number}+2)}" th:unless="${page.last}" th:text="下一页"></a> //末页按钮 <a class="item" th:text="末页" th:href="@{/admin/blogList(pageNum=${page.totalPages})}"></a> </div> </th>
展示分页效果图: