안녕하세요. hia의 개발 story입니다.
오늘은 JpaRepository를 이용해 페이징 처리와 정렬 처리를 해보려고 합니다.
지난번에 만든 테이블에는 데이터가 부족하니 sample 테이블에 페이징을 볼 수 있는 데이터를 50개 정도 넣도록 하겠습니다.
이제 CRUD 테스트를 위해 만들었던 SampleRepositoryTests를 이용해 계속 테스트를 해보겠습니다.
페이징 처리 : findAll()
페이징 처리는 findAll() 메서드를 이용하면 됩니다.
이때 findAll( )의 매개변수로 Pageable을 사용하면 Page <T>로 반환을 하게 되어있습니다.
아래의 소스로 페이징 되어 나오는 데이터를 확인할 수 있습니다.
@Test
public void pageTest(){
Pageable pageable = PageRequest.of(0,10);
Page<Sample> page = sampleRepository.findAll(pageable);
System.out.println("총 페이지 : " + page.getTotalPages());
System.out.println("전체 갯수 : " + page.getTotalElements());
System.out.println("현재 페이지 번호 : " + page.getNumber());
System.out.println("페이지당 데이터 갯수 : " + page.getSize());
}
전체 50개의 데이터를 10개씩 페이징 하여 한 페이지당 10개의 데이터를 가지고 있는걸 확인할 수 있습니다.
이제 이걸 이용해 첫 페이지의 데이터를 출력해 보도록 합시다.
for(Sample sample : page.getContent()){
System.out.println(sample);
}
아래 결과에서 처럼 현재 페이지 번호 0번의 데이터 10개를 불러왔습니다.
페이지에 정렬 조건 추가
이제 만들어진 페이지를 역순으로 정렬해보도록 하겠습니다.
Sort 타입을 통해 페이징시 정렬값을 전달 할 수 있습니다.
@Test
public void sortTest(){
Sort sort = Sort.by("id").descending();
Pageable pageable = PageRequest.of(0,10, sort);
Page<Sample> page = sampleRepository.findAll(pageable);
for(Sample sample : page.getContent()){
System.out.println(sample);
}
}
역순으로 정렬하여 출력하니 아래와 같이 나오는 것을 볼 수 있습니다.
감사합니다.
'Springboot' 카테고리의 다른 글
[Spring Boot] 쿼리메서드 - deleteBy 사용하기 (0) | 2023.06.12 |
---|---|
[Spring Boot] JpaRepository에서의 쿼리메서드 (0) | 2023.03.31 |
[Spring Boot] JpaRepository를 이용한 CRUD 테스트 예제 공부 (0) | 2023.03.21 |
[Spring Boot] Spring JPA 엔티티 클래스 작성해서 테이블 만들기 (0) | 2023.03.20 |
[Spring Boot] MariaDB와 Spring JPA 사용하기 (0) | 2023.03.14 |