Spring Data JPA。从Pageable获取所有页面

时间:2018-03-20 12:55:08

标签: spring-boot spring-data-jpa

我有一个SpringBoot应用程序和一个从CrudRepository

延伸的界面
@Query("select cps from HotelPriceSummary cps where cps.price > 5 and cps.profilePercentage >= 70 ")
List<HotelPriceSummary> findMine(Pageable pageable);

我想知道是否可以从对象Pageable获取页面总数

2 个答案:

答案 0 :(得分:2)

您可以使用返回总元素的Page<T>接口。

  

长 - getTotalElements()

     

返回元素总数。

您可以在文档中找到更多内容: PagePageImpl

在你的例子中,它应该是这样的:

@Query("select cps from HotelPriceSummary cps where cps.price > 5 and cps.profilePercentage >= 70 ")
Page<HotelPriceSummary> findMine(Pageable pageable);

答案 1 :(得分:1)

您应该从PagingAndSortingRepository而不是CrudRepository扩展您的存储库。然后方法查询应该是:

@Query("select cps from HotelPriceSummary cps where cps.price > 5 and cps.profilePercentage >= 70 ")
Page<HotelPriceSummary> findMine(Pageable pageable);

之后,您可以使用来自服务(或任何您想要的)的查询,然后在响应中使用getTotalPages()。例如:

int page = 0, pageSize = 10;    
Page<HostelPriceSummary> response = myRepo.findMine(PageRequest.of(page, pageSize));
int numberOfPages =  response.getTotalPages();