springframework

paging 기법.

Jungsoomin :) 2020. 7. 29. 16:40

사실...봐도 모르겠어서 정리한 것을 적는다.

 

1. 한 화면에 몇 개의 글을 보여줄 것인가. w_size

2.총 몇개의 페이지를 보여줄 것인가. 

이 두가지가 핵심이다...!

w_size = 5로 하고 있고.  즉 화면에 보여줄 글은 5개.


페이지수를 구하는 방법,,
글이 42개 있다는 가정 하, (42 - 1 / w_size) + 1 = 9 페이지..?
40개라면 (40-1 / w_size) +1 ...? 8페이지.
즉 페이지 카운트 식은 
   ( 총 글 개수 -1 / 한 화면에 보여주고 싶은 글의 수) +1 이다.

페이지의 번호 구하기
    페이징의 시작과 끝을 구해야 한다.
시작페이지 구하는 식
    ( (페이지번호 - 1) / 총 페이지 사이즈) * 총 페이지 사이즈 +1 값
페이지 번호가 1이라면 ( (1-1) / 5 ) * 5 +1 = 1...?
7페이지라면 ( (7-1 / 5) * 5 +1 = 6;;;

페이지의 마지막 번호 구하기
      시작 페이지 번호 + 페이지 총 사이즈 -1
1 + 5 - 1 = 5  >>> 1 == 5
6 + 5 -1 = 10 >>> 6 == 10

더 나아가 시작 페이지 번호 + 페이지 총 사이즈-1 과 페이지 수 중 작은 값이다.
1 + 5 - 1 or 총페이지수 9  즉 5
6 + 5 - 1 or 총페이지수 9 즉 9

pre 와 next 구하기
  조건은 2가지..? pre는 스타트번호가 1이아니면 되고 next는 총페이지 수보다 작으면 된다.
1페이지당 5개의 글이므로 현재 페이지 * 한화면 글의 갯수(5) = 마지막 글의 번호가 된다.
여기서 5를 빼고 +1 을 하면 시작 번호가 나온다.
즉 7페이지라면 마지막 글번호는 7*5 = 35 / 시작번호는 31 이다.

그러므로 현재 페이지 * 한화면 글의 갯수  - 한화면 글의 갯수 +1 이 1보다 작으면 pre는 허용하지 않고, 

   현재 페이지 * 한화면 글의 갯수 가 총 recode 보다 크다면 next는 허용하지 않는다.