如何使用Spring数据JPA通过排序和可分页来查询开箱即用的数据?

2022-08-31 13:47:21

我正在我的项目中尝试Spring data JPA。我想知道是否有开箱即用的API来查询数据,通过 和 .当然,我知道我可以自己写那个方法,我只是想知道是否有一个开箱即用的方法。我的DAO扩展,我发现有以下方法可以调用:SortPageableJpaRepository

findAll();
findAll(Pageable pageable);
findAll(Sort sort);

但是没有这样的方法,所以我很好奇。findAll(Sort sort, Pageable pageable)


答案 1

有两种方法可以实现此目的:

final PageRequest page1 = new PageRequest(
  0, 20, Direction.ASC, "lastName", "salary"
);

final PageRequest page2 = new PageRequest(
  0, 20, new Sort(
    new Order(Direction.ASC, "lastName"), 
    new Order(Direction.DESC, "salary")
  )
);

dao.findAll(page1);

如您所见,第二种形式更加灵活,因为它允许为每个属性定义不同的方向()。lastName ASC, salary DESC


答案 2

分页还有一个选项来指定排序。从 java 文档

PageRequest(int page, int size, Sort.Direction direction, String... properties) 

创建应用了排序参数的新 PageRequest。


推荐