我正在我的项目中尝试Spring data JPA。我想知道是否有现成的API来查询数据,通过Sort
和Pageable
。当然,我知道我可以自己编写这个方法,我只是想知道是否有现成的方法。我的DAO扩展了JpaRepository
,我发现有以下方法可以调用:
findAll();
findAll(Pageable pageable);
findAll(Sort sort);
但是没有findAll(Sort sort, Pageable pageable)
这样的方法,所以我很好奇。
7条答案
按热度按时间zxlwwiss1#
有两种方法可以实现这一点:
如您所见,第二种形式更加灵活,因为它允许为每个属性定义不同的方向(
lastName ASC, salary DESC
)。yvt65v4c2#
Pageable也有一个指定排序的选项。从java doc
创建一个应用了排序参数的新PageRequest。
gwo2fgha3#
在2020年,由于
PageRequest
已被弃用,因此可接受的答案有点过时,因此您应该使用如下代码:qcbq4gxm4#
Spring Pageable包含一个Sort。因此,如果您的请求包含这些值,它将返回一个排序的可分页。
请求:
domain.com/endpoint?sort=[FIELDTOSORTBY]&[FIELDTOSORTBY].dir=[ASC|DESC]&page=0&size=20
它应该返回一个按提供的顺序提供的排序的可分页字段。
hgc7kmma5#
在我的例子中,为了同时使用
Pageable
和Sorting
,我使用了下面的方法。在这个例子中,我使用分页并按照id
的降序对所有元素进行排序:像上面一样,根据您的要求,您也可以使用2列对数据进行排序。
dly7yett6#
可以在请求的URL中提供排序参数和排序方向。Spring Pageable会自动解析URL参数并创建Pageable对象,该对象由您的rest控制器获取。我相信这是最好的解决方案之一,因为它有助于避免手动示例化PageRequest/Pageable对象(注意排序方向前的逗号字符):
domain.com/endpoint?sort=[FIELD],[asc|desc]&page=3&size=100
cidc1ykv7#