JPA를 이용한 페이징 처리 구현 예제
//페이징 처리
Pageable pageable = new PageRequest(0,3);
//Pageable 인터페이스로 페이징 정보를 가져온다. 본체 클래스로는 PageRequest클래스가 있으며 이 클래스 생성자의 첫번째 인자는 페이지 수를, 두번째 인자는 한 //페이지가 포함하는 데이터 수를 나타냅다.(페이지 수는 0부터 시작한다.)
Page<Customer> page = customerRepository.findAll(pageable);
한 페이지 데이터 수 : page.getSize()
현재 페이지 : page.getNumber()
전체 페이지 수 : page.getTotalPages()
전체 데이터 수 : page.getTotalElements()
해당 페이지의 데이터 리스트 : page.getContent() // .forEach(System.out::println);
@RestController
@RequestMapping("api/customers")
public class CustomerRestController {
@RequestMapping(method = RequestMethod.GET)
Page<Customer> getCustomers(@PageableDefault Pageable pageable) {
Page<Customer>customer = customerService.findAll(pageable);
return customers;
/**
페이징 정보를 CustomerService에 넘겨주며 검색, 결과를 Page객체 형태로 반환하도록 한다.
}
....
}
Pageable객체를 인자로 받으면 페이징 정보를 얻을 수 있다.
응답 파라미터에 설정한 page, size가 이 Pageable객체에 매핑된다.
파라미터를 지정하지 않으면 기본값으로 설정되므로 @PageableDefault애너테이션을 붙인다.
@PageableDefault 애너테이션에 page나 size의 값을 지정할 수 있지만 아무것도 지정하지 않으면 기본값 page=0, size=20으로 지정된다. page 파라미터는 0부터 시작한다는 점에 주의.
@Service
@Transactional
public class CustomerService {
...
public Page<Customer>findAll(Pageable pageable) {
return customerRespository.findAllOrderByName(pageable);
}
...
}
'프로그래밍 > Spring' 카테고리의 다른 글
@ModelAttribute와 @Validated를 이용한 Form요소 전달 예제 (0) | 2019.04.19 |
---|---|
스프링 MVC Location 헤더에 리소스URI 설정 예제 (0) | 2019.04.19 |
@Query어노테이션, JPQL(Java Persistence Query Language) (0) | 2019.04.17 |
Log4JDBC로 SQL 로그 출력을 위한 설정 (0) | 2019.04.17 |
H2 파일 데이터베이스를 사용하도록 설정 (0) | 2019.04.17 |