在上一篇文章中,我们完成了博客详情页面的展示,并实现了博客的评论功能。这一篇文章,我们将继续完善博客系统,实现博客的分页显示功能。
Spring Boot 提供了非常便捷的分页功能,我们可以使用 Spring Data JPA 提供的 Page
类来实现分页。
- 修改
BlogController
中的listBlog
方法,使其支持分页。
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String listBlog(@RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(value = "size", defaultValue = "10") int size,
Model model) {
Pageable pageable = PageRequest.of(page, size);
Page<Blog> pageBlog = blogService.listBlog(pageable);
model.addAttribute("pageBlog", pageBlog);
return "admin/blog";
}
- 修改
BlogService
中的listBlog
方法,使其返回Page<Blog>
类型。
public interface BlogService {
Page<Blog> listBlog(Pageable pageable);
// ...
}
- 实现
BlogServiceImpl
中的listBlog
方法。
@Service
public class BlogServiceImpl implements BlogService {
// ...
@Override
public Page<Blog> listBlog(Pageable pageable) {
return blogRepository.findAll(pageable);
}
}
- 修改
blog.html
页面,添加分页的显示。
<div class="row">
<div class="col-md-12">
<div th:if="${pageBlog.totalPages > 1}">
<ul class="pagination">
<li class="page-item" th:if="${pageBlog.number > 0}">
<a class="page-link" href="list?page=0&size=10" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
<li class="page-item" th:each="i : ${#numbers.sequence(0, pageBlog.totalPages - 1)}">
<a class="page-link" th:href="@{list(page=${i}, size=10)}" th:text="${i + 1}"></a>
</li>
<li class="page-item" th:if="${pageBlog.number < pageBlog.totalPages - 1}">
<a class="page-link" href="list?page=${pageBlog.totalPages - 1}&size=10" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</div>
</div>
</div>
现在,当你访问博客列表页面时,博客将按照指定的页码和每页大小进行分页显示,并且会有分页导航条方便用户跳转。
这样,我们就在博客系统中集成了分页功能,为系统提供了更好的用户体验。