programing

Spring Data JPA에서 페이지 생성

batch 2023. 7. 5. 20:34
반응형

Spring Data JPA에서 페이지 생성

저는 Spring Data JPA에서 페이지화 기능을 구현하려고 합니다.이 블로그 내 컨트롤러에 다음 코드가 포함되어 있음을 알려드립니다.

 @RequestMapping(value="/organizationData", method = RequestMethod.GET)
  public String list(Pageable pageable, Model model){
    Page<Organization> members = this.OrganizationRepository.findAll(pageable);
    model.addAttribute("members", members.getContent());
    float nrOfPages = members.getTotalPages();
    model.addAttribute("maxPages", nrOfPages);
    return "members/list"; 
  }

나의 DAO는 다음과 같습니다.

@Query(value="select m from Member m", countQuery="select count(m) from Member m")
  Page<Organization> findMembers(Pageable pageable);

처음 20개의 레코드를 보여줄 수 있는데, 다음 20개는 어떻게 보여줄 수 있습니까?제가 참고할 수 있는 다른 페이지 예시가 있나요?

Pageable의 생성자는 더 이상 사용되지 않습니다.of()대신:

Pageable pageable = PageRequest.of(0, 20);

저번 주에도 비슷한 문제가 있었는데 찾을 수가 없어서 직접 답변드리겠습니다.

매개 변수를 너무 늦게 지정하는 것이 문제입니다. Pageable다음과 같은 방식으로 작동합니다.Pageable특정 속성을 가진 개체입니다.적어도 다음을 지정할 수 있습니다.

  1. 페이지 크기,
  2. 페이지 번호,
  3. 정렬.

다음과 같이 가정해 보겠습니다.

PageRequest p = new PageRequest(2, 20);

쿼리에 전달된 위의 내용은 결과를 필터링하여 21일부터 40일까지의 결과만 반환됩니다.

지원하지 않습니다.Pageable결과적으로당신은 그것을 쿼리와 함께 전달합니다.

편집:

생성자:PageRequest사용되지 않습니다.사용하다Pageable pageable = PageRequest.of(2, 20);

페이지, 목록 또는 조각을 사용할 수 있습니다.

페이지 수가 필요하지 않고 다음 페이지가 있는지만 알면 되는 경우 "카운트" 쿼리를 수행하지 않으므로 슬라이스를 사용합니다.

  for (int i = 0;  ; i++) { 
     Slice<Organization> pageOrganization = organizationRepository.find(PageRequest.of(0, 100));        
    
    
     List<Organization> organizationList = pageOrganization.getContent();
     for (Organization org : organizationList) {
           // code
     }
    
    if (!pageOrganization.hasNext()) {
        break;
    }   
}

Pageable 객체는 기본적으로 크기 20, 페이지 0 및 정렬되지 않은 상태로 제공됩니다. 따라서 만약 당신이 프런트 엔드에서 다음 페이지를 원한다면 url을 쿼리 매개변수 페이지, 크기, 정렬과 함께 보낼 수 있으며, 우체부에서 테스트할 수 있습니다.

언급URL : https://stackoverflow.com/questions/40714707/creating-pagination-in-spring-data-jpa

반응형