Spring 페이지네이션(Pagination) with Spring Data JDBC
Repository
public interface MemberRepository extends PagingAndSortingRepository<Member, Long> {
}
Spring Data JDBC supports PagingAndSortingRepository to provide additional methods to retrieve entities using the pagination and sorting abstraction.
Controller
@GetMapping
public ResponseEntity getMembers(@RequestParam("page") @Min(1) int page, @RequestParam("size") @Min(1) int size) {
Page<Member> members = memberService.findMembers(page-1,size);
return new ResponseEntity<>(members, HttpStatus.OK);
}
Service
private MemberRepository memberRepository;
public Page<Member> findMembers(int page, int size) {
PageRequest pageable = PageRequest.of(page, size, Sort.Direction.fromString("DESC"), "memberId");
return memberRepository.findAll(pageable);
}
멤버를 페이지네이션하기 위해 Controller에 page와 size를 받는 getMembers라는 메서드와 memberService에 findMembers라는 메소드가 있다 가정하겠습니다.
동작방식
1.Controller에서 멤버 페이징해서 찾아줘라는 요청이 들어옵니다.
2. Pageable 인터페이스를 구현한 PageRequest를 이용 page,size,오름차순 or 내림차순, 어떤걸 기준을 정렬을 할것인지
를 작성하여 변수로 만들어주고 이를 findAll을 할때 매개변수로 전해주어 select을 진행 할시 알맞은 페이지네이션이 되게 되어 나오게 만듭니다.
PageRequest pageable = PageRequest.of(page, size, desc or asc , 정렬기준);
Service에서 PagingAndSortingRepository를 상속 받은 memberReopository를 이용 findAll로 페이징 되어있는 값을 리턴합니다.

Page<Member> (Member는 content부분에 나올 entity형식인거같습니다) 로 리턴이 되는데 이를 postman에서 출력하게되면 위와같은 사진처럼 출력이 됩니다.

만약 원하는 값만 출력하고 싶다면 리턴된 Page<> 값을 가져가 Mapper를 이용 원하는 형식으로 변환해서 출력하면 됩니다.
참조