我有一个简单的查询控制器,它接受查询参数(如Person
dto(和一个Pageable
:
@RestController
public class PersonController {
@GetMapping("/persons")
public Object search(org.springframework.data.domain.Pageable pageable, Person form) {
repository.findAll(form, pageable);
}
}
可分页对象可以采用sort
和page
参数,如下所示:
http://localhost:8080/persons?sort=age,desc&page=5
问题:对于排序,我想添加订单提示,例如NULLS_LAST
或NULLS_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)));