如何通过Sort和Pageable使用Spring数据JPA开箱即用地查询数据?

Tom*_*Tom 70 java spring jpa spring-data-jpa

我在我的项目中尝试Spring数据JPA.我想知道是否有出的现成的API来查询数据,双方SortPageable.当然,我知道我可以自己编写这个方法,我只是想知道是否有一个开箱即用的方法.我的DAO扩展了JpaRepository,我发现有以下方法可以调用:

findAll();
findAll(Pageable pageable);
findAll(Sort sort);
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*icz 153

有两种方法可以实现这一目标:

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);
Run Code Online (Sandbox Code Playgroud)

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

  • 这是我的解决方案但是在春天它是:Pageable pageable = new PageRequest(0,20,new Sort(new Sort.Order(Direction.ASC,"name")),new Sort.Order(Direction.DESC,"salary") )); (4认同)
  • 通过REST控件传递多个列从Javascript排序数据可以使用以下Javascript数据完成:['name,asc','location,desc'] (3认同)

gka*_*mal 14

Pageable还可以选择指定排序.来自java doc

PageRequest(int page, int size, Sort.Direction direction, String... properties) 
Run Code Online (Sandbox Code Playgroud)

创建一个应用了排序参数的新PageRequest.

  • 这样您就可以为所有属性设置一个排序方向.如果要区分每个属性的排序方向,则必须使用Tomasz指出的Sort对象. (2认同)