我需要您的分页建议。
我的表数据很长。因此我使用分页和每一个分页操作İ从数据库调用数据
我在spring-boot应用程序中有一个rest方法。
这种方法可以从数据库中获取数据,一切正常。
我需要分页计数(所有数据计数/每页计数)。
我可以从数据库中找到此计数。
我必须为allCount和下面的方法编写两个单独的方法吗?
如何在Spring Boot中使用理想的分页方法?
@CrossOrigin(maxAge = 3600)
@RequestMapping(value = "/payment/all", method = RequestMethod.POST)
public List<NotaryPaymentInformationEntity> getAllProduct(@RequestBody PaginationModel pag){
try {
System.out.println(pag.getPageno()+ " " + pag.getRecords());
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Pageable pageable = new PageRequest(pag.getPageno(), pag.getRecords());
System.out.println("here"+notaryPaymentRepository.findAll(pageable).getContent().size());
return notaryPaymentRepository.findAll(pageable).getContent();
}
public interface NotaryPaymentRepository extends JpaRepository<NotaryPaymentInformationEntity,Integer>{
}
答案 0 :(得分:3)
您可以在Page类obj中获得查询的响应,该类扩展了Slice类并提供了所需的所有方法。
Pageable pageable = new PageRequest(pageNo, PAGE_SIZE);
pageNo和PAGE_SIZE需要从客户端发送
@Query(value = "SELECT h FROM {NameOfYourModelClass} h")
Page<HorseWatch> getPaginatedModel(Pageable pageable);
从您的服务类中调用此方法,然后在Page对象中对其进行检索
您可以使用(使用 getContent(), getNumber(), getTotalPages())来获取页面内容,页面编号和页面总数。 strong>来自对象)
将这些值保存在响应类中,然后将此类发送回客户端
public class PageResponse {
private List<{NameOfModelClass}> content;
private int currentPage;
private int totalPages;
}
答案 1 :(得分:1)
您需要分页支持,然后添加参数Pageable pageable
@CrossOrigin(maxAge = 3600)
@RequestMapping(value = "/payment/all", method = RequestMethod.POST)
public List<NotaryPaymentInformationEntity> getAllProduct(Pageable pageable){
try {
System.out.println(pag.getPageno()+ " " + pag.getRecords());
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//NO pageable object need to be manually constructed
return notaryPaymentRepository.findAll(pageable).getContent();
}
和URL现在可以具有额外的查询参数,例如 / payment / all?page = 2&size = 10
如果您使用Spring数据REST,那么您将获得HATEOAS支持,这将为您提供更多有关总计数以及所处页面的信息,等等。但是响应将采用HAL格式。 参考: https://docs.spring.io/spring-data/rest/docs/current/reference/html/#paging-and-sorting