본문 바로가기
프로그래밍/Spring

JPA를 이용한 페이징 처리 구현 예제

by Mr-후 2019. 4. 17.
반응형

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);

}

...


}




반응형