如何从 Spring Data Pageable 检索排序属性和方向?

fur*_*y12 8 java spring-data

我正在构建一个 API,它将调用另一个 API 并返回结果。我正在调用的 API 具有分页和排序机制,需要将以下查询参数添加到 URL:

?pageNumber=1&pageSize=20&sortField=id&sortDirection=asc
Run Code Online (Sandbox Code Playgroud)

现在,我希望我的 API 使用 Spring Pageable 对象作为控制器方法中的参数,因此,根据 Spring Docs,传递给我的新 API 的 URL 将是:

?page=1&size=20&sort=id,asc
Run Code Online (Sandbox Code Playgroud)

因此,为了将接收到的 pageable 对象映射到我需要传递给底层 API 的所需查询参数,我需要从 Pageable 对象中检索分页和排序信息。至于它pageSizepageNumber它非常简单:

pageable.getPageNumber()
pageable.getPageSize()
Run Code Online (Sandbox Code Playgroud)

但是如何检索 sortField 和 sortDirection?

pageable.getSort() 返回 Sort 对象,我无法从中找到检索所需内容的方法 - sortField 值(带有属性名称的字符串)和 sortDirection 值(asc 或 desc)

谢谢

Mic*_*ael 9

Pageable::getSort会给你一个Sort,那就是一个IterableSort.Order秒。您需要遍历其中的每一个。它们包含您正在寻找的属性。

Sort sort = Sort.by(Sort.Direction.ASC, "abc");

for (Sort.Order order : sort)
{
    System.out.println("Property: " + order.getProperty());
    System.out.println("Direction: " + order.getDirection());
}
Run Code Online (Sandbox Code Playgroud)

印刷

Property: abc
Direction: ASC
Run Code Online (Sandbox Code Playgroud)