您的位置:首页 > 编程语言 > Java开发

Spring Data Rest学习篇----Paging and Sorting (分页和排序)

2016-10-02 17:50 507 查看
Spring Data Rest---Paging and Sorting  (分页和排序)

对应spring-data-rest-reference 的第6章
1. Paging
  Spring Data REST能识别含有分页和排序请求的URL,从而返回用户想要的数据,而不是直接返回一大堆数据集合。如果你继承PagingAndSortingRepository<T, ID>并获取实体类的列表集合,例如:
interface PersonRepository extends PagingAndSortingRepository<Person, Long> {}
那么请求数据分页默认数为20个,也就是说第一次请求为20个数据,并带有分页的参数,如果想要自定义分页的参数,可以采用更改请求的URL参数的办法进行更改:
http://localhost:8080/persons/?size=5 如果要在你自己的查询方法中使用分页,需要在方法的参数中添加一个Pageable参数,这样获得的数据是一页数据(Page)而不是一个列表(List):

@RestResource(path = "nameStartsWith", rel = "nameStartsWith")
public PagefindByNameStartsWith(@Param("name") String name, Pageable p);
这样的一个查询方法,会输出到链接:/people/search/nameStartsWith 并且会支持分页,这个原理和Spring Data Jpa的类似。

2. Previous and Next Links

每个分页的response数据返回到前端页面,都有一个prev和next链接,比如在浏览器中请求 localhost:8080/people?size=5 后得到的数据如下:

{
"_links" : {
"self" : {
"href" : "http://localhost:8080/persons{&sort,page,size}",
"templated" : true
},
"next" : {
"href" : "http://localhost:8080/persons?page=1&size=5{&sort}",
"templated" : true
}
},
"_embedded" : {
... data ...
},
"page" : { ③
"size" : 5,
"totalElements" : 50,
"totalPages" : 10,
"number" : 0
}
}
这两个链接是指向下一级链接(next)和上一级(prev)的链接的地址,

3. Sorting
  和Paging一样,Spring Data Rest识别含有排序的URL请求参数,实体类对应的同样有一个实体仓库。为了让数据按照自己想要的参数进行排序,可以在URL请求中添加一个name属性,并指定属性的排序方式,指定排序的方向(正向asc,逆向desc),比如: http://localhost:8080/people/search/nameStartsWith?name=K&sort=name,desc 这样一个语句是使用了定义在PersonRepository中的findByNameStartsWith查询方法进行查询所有Person的姓名中以字母K开头的并以name进行逆向排序的用户。通常为使用多个属性进行排序,往往可以添加sort=PROPERTY自己想要排序的参数进行排序。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: