如何在 spring-data-rest 中使用 Pageable 作为获取查询参数?



我有一个简单的查询控制器,它接受查询参数(如Persondto(和一个Pageable

@RestController
public class PersonController {
@GetMapping("/persons")
public Object search(org.springframework.data.domain.Pageable pageable, Person form) {
repository.findAll(form, pageable);
}
}

可分页对象可以采用sortpage参数,如下所示:

http://localhost:8080/persons?sort=age,desc&page=5

问题:对于排序,我想添加订单提示,例如NULLS_LASTNULLS_FIRST

问题:如何使用查询参数来实现此目的?

> 您可以像这样修改Pageable对象(例如放入控制器的方法(。这是一个具有一个排序字段的示例,但您可以循环访问所有字段并以相同的方式修改nullsLast/nullsFirst。请尝试 :

private Pageable customSort(Pageable pageable) {
Sort sort = pageable.getSort();
Order order = sort.iterator().next();
List<Order> orders = new ArrayList<>();
// nullsFirst or nullsLast
orders.add(new Order(order.getDirection(),order.getProperty()).nullsFirst());
return PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by(orders));
}

尝试执行以下操作:

pageable.getSort().and(Sort.by(new Sort.Order(Sort.Direction.DESC, "age", Sort.NullHandling.NULLS_LAST)));