[Spring Data JPA] Pagable - Pagination

Spring Boot

(Update : 2022-06-16)

Language :

QueryParamter를 통해 페이지 정보를 전달하여, 편리하게 페이지를 처리할 수 있도록 Pageable이라는 객체 제공

의존성 spring-boot-starter-web

요청 파라미터 형식

?page=0&size=10&sort=id,desc&sort=no,desc

  • page: 현재 페이지. 0부터 시작
  • size: 한 페이지에 표시할 데이터 건수
  • sort: 정렬 조건
  • direction: 정렬 기준 방향 (asc 생략 가능)

기본 사용

@Controller
class BoardController {
	@GetMapping("/board")
	fun getBoardList(@RequestParam param: String, pageable: Pageable): List<BoardResponse> { }
}
@Repository
class BaordRepository {
	fun getBoardList(param: String, pageable: Pageable): List<Board> { }
}

전체 설정

# DATA WEB (SpringDataWebProperties)
spring.data.web.pageable.default-page-size=20 # Default page size.
spring.data.web.pageable.max-page-size=2000 # Maximum page size to be accepted.
spring.data.web.pageable.one-indexed-parameters=false # Whether to expose and assume 1-based page number indexes.
spring.data.web.pageable.page-parameter=page # Page index parameter name.
spring.data.web.pageable.prefix= # General prefix to be prepended to the page number and page size parameters.
spring.data.web.pageable.qualifier-delimiter=_ # Delimiter to be used between the qualifier and the actual page number and size properties.
spring.data.web.pageable.size-parameter=size # Page size parameter name.
spring.data.web.sort.sort-parameter=sort # Sort parameter name.

개별 설정

@PageableDefault 어노테이션 사용

@Controller
class BoardController {
	@GetMapping("board")
	fun getBoardList(@RequestParam param: String, @PageableDefault(size=10, sort="id", direction=Sort.Direction.DESC) pageable: Pageable): String {
	}
}

페이지 2개 이상

접두어로 구분

// ?notice_page=0&guide_page=1
fun getBoardList(@Qualifier("notice") noticePageable: Pageable, @Qualifier("guide") guidePageable: Pageable)

민갤

Back-End Developer

백엔드 개발자입니다.