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
특정 속성을 가진 개체입니다.적어도 다음을 지정할 수 있습니다.
- 페이지 크기,
- 페이지 번호,
- 정렬.
다음과 같이 가정해 보겠습니다.
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
'programing' 카테고리의 다른 글
왜 GCC는 C보다 C++에 대해 isnan()을 더 효율적으로 구현합니까? (0) | 2023.07.05 |
---|---|
스프링 부트:이 리소스에 액세스하려면 전체 인증이 필요합니다. (0) | 2023.07.05 |
Oracle JDBC Thin Client 식별자 변경 (0) | 2023.07.05 |
스풀 명령:SQL 문을 파일로 출력하지 않음 (0) | 2023.07.05 |
SQL Server 데이터베이스에 auto_increment 기본 키를 추가하려면 어떻게 해야 합니까? (0) | 2023.07.05 |