1、排序
我们先增加一点测试数据
回到PostController中的findAll方法,改成按照publishDate倒序排序
2、后台分页
JpaRepository提供了一个Pageable接口参数用作分页,同时包含了排序PageRequest是Pageable的实现类,这里我们使用PageRequest下面的这个静态方法来构造我们的分页请求
page,是当前页数,从0开始计数,size是每页的数据大小,Sort是排序,在上面我们已经用过了。
在这里我们先不去动原来的findAll方法了,我们新增一个findPage方法
因为是get请求,我们可以直接在浏览器测试
可以看到浏览器正常返回了,但是数据中文乱码,我们打开开发者工具,查看网络请求,这里不是乱码就ok了。
现在请求放回的是一个Page接口的实现类PageImpl,简单解释下他包含的属性:
content:即当前分页的数据集List
empty:当前页是否为空
first:是不是第一页
last:是不是最后一页
number:当前页码(从0开始)
numberOfElements:当前页的数据大小(除了最后一页可能小于分页大小,其他页都应等于分页大小)
pageable:我们开始传入的分页请求
size:分页大小
sort:排序
totalElements:总共有多少数据
totalPages:总共有多少页
这里面有很多属性都是冗余的,都可以通过其他属性计算出来,大家可以根据需要选用。
我们修改一下页码,后台接口应该是没问题了。
3、前端分页
下图是最终的样式
修改list.ftlh,增加分页组件
size-change事件是在选择每页显示多少条时触发,current-change事件则是在当前页码改变时触发,前端页码从1开始计数。
现在第一页数据出来了,我们点击分页的时候,数据没变化,因为我们在处理handleSizeChange和handleCurrentChange时没有重新发起请求,我们重构下代码,增加一个query方法
这样我们的分页功能就算全完成了。
4、总结
这章主要讲了怎么进行排序和分页,这时我们实战中经常会碰到的问题,我们需要熟悉好springboot提供给我们的接口。更多情况下,我们经常还需要对页面数据进行过滤查询,我们在下一章进行讲解。
代码:
https://github.com/www15119258/springboot-study/tree/branch13
网友评论