log

[Spring Boot] 게시글 페이징 기법 정리 본문

SpringBoot

[Spring Boot] 게시글 페이징 기법 정리

sun_young 2023. 8. 22. 13:56

페이징 기법

수많은 자료 데이터를 일정 크기로 나누어서, 나누어진 하나하나의 집단에 페이지 번호를 부여하는 방식

- 정해진 개수와 원하는 영역의 게시판 데이터를 출력하여 가독서오가 자원 낭비 문제 개선

1. Repository 

Page<FreePost> findAll(Pageable pageable);

pageable로 받은 값을 토대로 페이징 하여 Page<FreePost>를 리턴

 

- pageable

getPageNumber(), getPageSize() 등 페이징을 구현할 때 필요한 값들을 구현할 수 있도록 도와주는 메서드들이 있음

 

2. Service 

 public Page<FreePost> getPageList(int page) {
        Pageable pageable = PageRequest.of(page, 10); // 조회할 페이지 번호(0부터 시작), 한 페이지에 보여줄 최대 개수
        return this.freePostRepository.findAll(pageable);
}

조회할 페이지 번호와 한 페이지에 보여줄 최대 게시글 개수를 매개변수로 넘겨줘서 Pageable 객체를 리턴 받는다

이후 앞서 작성한 Repository.findAll 메서드에 pageable을 넘겨준다

 

3. Controller

@ResponseStatus(HttpStatus.CREATED)
@GetMapping("/{page}")
public Page<FreePost> getFreePostList(@PathVariable int page) {
	Page<FreePost> paging = freePostService.getPageList(page);
	return paging;
}

시작할 페이지 번호를 url로 입력받고, Service를 호출해서 page 값을 넘겨준다 

이후 리턴 받은 Page<FreePost>를 클라이언트로 전송한다

 

4. 결과 확인

 성공!

 

페이징 정보도 같이 출력됨