Spring Boot入门(第十三章):排序与分页查询

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

你可能感兴趣的:(Spring Boot入门(第十三章):排序与分页查询)