코딩 기록들
Pagination 구현하기 본문
Pagination
브라우저에 노출되어야 하는 목록의 양이 매우 많아 모두 보여줄 수 없을 때 데이터를 블록 단위로 나누어 노출시키는 방법

Pagination 원리
1. 필요 데이터
- 조회할 페이지 번호
- 게시글의 총 개수
- 한 목록에 노출할 게시글의 수
2. 조회시작 게시글 번호 구하기
- 조회할 페이지 번호 * 한 목록에 노출할 게시글의 수 + 1
3. 조회 끝 게시글 번호 구하기
- (조회할 페이지 번호 + 1) * 한 목록에 노출할 게시글의 수
ex)게시글의 총 개수 : 62개, 한 페이지에 노출할 게시글 개수: 10개
-> 총 페이지 수 : 7페이지 (0~6) *첫번째 페이지는 0부터 시작한다*

* 0번페이지, 즉 첫번째 페이지의
1) 조회시작 게시글번호 구해보기
- 조회할 페이지 번호 * 한 목록에 노출할 게시글의 수 + 1 => 0 * 10+ 1 = 1
2) 조회 끝 게시글번호 구해보기
- (조회할 페이지 번호 + 1) * 한 목록에 노출할 게시글의 수 => (0+1) * 10 = 10
Pagination은 Paging Query를 이용해 작성한다
SELECT *
FROM (SELECT ROWNUM RNUM
, S.*
FROM (정렬된 조회 쿼리) S
WHERE ROWNUM <= 조회 시작 게시글 번호)
WHERE RNUM >= 조회 끝 게시글 번호
정렬된 조회쿼리를 inline query로 놔둔다
페이지 번호도 Pagination을 해 주어야 한다 (page group)
• 필요 데이터
- 총 페이지의 개수
- 한 페이지 그룹에 보여줄 페이지 번호의 개수
- 총 페이지 그룹의 개수
- 현재 페이지 그룹 번호
- 페이지 그룹 번호의 시작 페이지 번호
- 페이지 그룹 번호의 끝 페이지 번호
• 총 페이지 그룹의 개수 ex) 15페이지 = 15/10 = 1.xx => 1번 페이지 일것
- 총 페이지의 개수 / 한 페이지에 보여줄 페이지 번호의 개수
• 현재 페이지 그룹 번호
- (현재 페이지 번호 / 한 페이지 그룹에 보여줄 페이지 번호의 개수)
• 페이지 그룹 번호의 시작 페이지 번호
- 현재 페이지 그룹 번호 * 한 페이지 그룹에 보여줄 페이지 번호의 개수
• 페이지 그룹 번호의 끝 페이지 번호
- (현재 페이지 그룹번호 + 1) * 한 페이지 그룹에 보여줄 페이지 번호의 개수 - 1