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

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

对应spring-data-rest-reference 的第6章

1. Paging

  Spring Data REST能识别含有分页和排序请求的URL,从而返回用户想要的数据,而不是直接返回一大堆数据集合。如果你继承PagingAndSortingRepository并获取实体类的列表集合,例如:

interface PersonRepository extends PagingAndSortingRepository {}

那么请求数据分页默认数为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自己想要排序的参数进行排序。

 

你可能感兴趣的:(Sping,Data,Rest)