Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring boot中选择理想的分页方式?_Java_Angular_Hibernate_Spring Boot_Jpa - Fatal编程技术网

Java 如何在Spring boot中选择理想的分页方式?

Java 如何在Spring boot中选择理想的分页方式?,java,angular,hibernate,spring-boot,jpa,Java,Angular,Hibernate,Spring Boot,Jpa,我需要你的分页建议 我的表数据非常长,因此我使用分页和来自数据库的每个pag操作调用数据 我在spring boot应用程序中有一个rest方法。 此方法可以从数据库中获取数据,一切正常。 我需要pag计数(我的数据的所有计数/每页计数)。 我可以从db中找到此计数。 我必须为allCount编写两个单独的方法和下面的方法? 如何在Spring boot中使用理想的分页方式 @CrossOrigin(maxAge = 3600) @RequestMapping(value = "/p

我需要你的分页建议

我的表数据非常长,因此我使用分页和来自数据库的每个pag操作调用数据
我在spring boot应用程序中有一个rest方法。
此方法可以从数据库中获取数据,一切正常。
我需要pag计数(我的数据的所有计数/每页计数)。
我可以从db中找到此计数。
我必须为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>{


}
@CrossOrigin(maxAge=3600)
@RequestMapping(value=“/payment/all”,method=RequestMethod.POST)

公共列表getAllProduct(@RequestBody PaginationModel pag){ 试一试{ System.out.println(pag.getPageno()+“”+pag.getRecords()); 睡眠(1000); }捕捉(中断异常e){ e、 printStackTrace(); } Pageable Pageable=新的页面请求(pag.getPageno(),pag.getRecords()); System.out.println(“here”+notaryPaymentRepository.findAll(pageable.getContent().size()); return notaryPaymentRepository.findAll(可分页).getContent(); } 公共接口NotaryPaymentRepository扩展了JpaRepository{ }

您需要分页支持,然后添加参数
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();
    }
@CrossOrigin(maxAge=3600)
@RequestMapping(value=“/payment/all”,method=RequestMethod.POST)
公共列表getAllProduct(可分页){
试一试{
System.out.println(pag.getPageno()+“”+pag.getRecords());
睡眠(1000);
}捕捉(中断异常e){
e、 printStackTrace();
}
//无需手动构造可分页对象
return notaryPaymentRepository.findAll(可分页).getContent();
}
URL现在可以有额外的查询参数,如/payment/all?page=2&size=10

如果您使用SpringDataREST,那么您将拥有HATEOAS支持,它将为您提供有关总计数的更多信息,以及您所处的页面等,但是响应将是HAL格式。
参考:

您可以在Page类obj中获得查询的响应,该类扩展了Slice类并具有您需要的所有方法

Pageable pageable = new PageRequest(pageNo, PAGE_SIZE);
页面号和页面大小需要从客户端发送

@Query(value = "SELECT h FROM {NameOfYourModelClass} h")
Page<HorseWatch> getPaginatedModel(Pageable pageable);
@Query(value=“从{NameOfYourModelClass}h中选择h”)
Page getPaginatedModel(可分页可分页);
从服务类调用此方法并在页面对象中检索它

您可以使用(使用对象中的getContent()getNumber()getTotalPages())获取页面内容、页码和总页数

将这些值保存在响应类中,并将此类发送回客户端

public class PageResponse {
    private List<{NameOfModelClass}> content;
    private int currentPage;
    private int totalPages;
}
公共类页面响应{
私有列表内容;
私人网页;
私人网页;
}

我向/payment/all发送http post。我可以更改限制和偏移量,并从数据库中获取此项目的数据。我想获得额外的计数(表中的所有行)。我认为这不是创建另一个方法的好方法,该方法将返回我所有数据的totalCount。@RequestBody PaginationModel页。此对象可以给我偏移量和限制。页面和大小是paginationmodel对象的替代项。你不再需要它了。但对于total count,您需要编写自己的查询并将其更新为响应。别无选择。否则可以使用Spring数据REST。请参阅我答案中的参考。太好了。我将我的方法签名更改为下面的。公共页面getAllProduct(@RequestBody PaginationModel pag)-我得到了所有这些信息。