목차
pagination
이건 스프링에만 국한된 기술은 아니고 웹 전반적으로 쓰이는 기술임
화면에 페이지네이션 처리를 하기 위해서는 우선적으로 크게 다음과 같은 정보들이 필요함
- 현재 페이지 번호(page)
- 이전과 다음으로 이동 가능한 링크의 표시 여부(prev, next)
- 화면에서 보여지는 페이지의 시작 번호와 끝 번호(startPage, endPage)
오라클을 기준으로 설명
1.인라인뷰에서 rownum이 힌트를 이용해서 DESC 정렬로 1번 ~ 20번까지 데이터를 구함
![[WebDevelopment]pagination - undefined - pagination [WebDevelopment]pagination - undefined - pagination](https://blog.kakaocdn.net/dn/bcIgoo/btrR9t4tQOU/PggQgIbiEOZePAWNP119kK/img.jpg)
2.바깥쪽 SELECT문에서 인라인뷰에서 나온 1 ~ 20번까지의 데이터 중 조건이 rn이 10보다 큰 데이터만 구함(인라인뷰의 결과중 11번부터 20번까지의 데이터만 조회됨
(BNO:10589495 ~ BNO:10589486의 데이터에 해당됨)화면에서 2페이지에 해당되는 데이터임)
![[WebDevelopment]pagination - undefined - pagination [WebDevelopment]pagination - undefined - pagination](https://blog.kakaocdn.net/dn/JpgVF/btrSagpZ6Gn/sFvk270JOsGCGESwejgPk1/img.jpg)
이를 mybatis에서 쿼리로 하면 아래와 같음
![[WebDevelopment]pagination - undefined - pagination [WebDevelopment]pagination - undefined - pagination](https://blog.kakaocdn.net/dn/c5G73C/btrR8WTC2ri/FFZ6RD9EMNEEBEoPLIoSgk/img.jpg)
pagination을 위한 공식
페이징의 끝번호(endPage)계산 공식
한페이지에 보여줄 게시글의 갯수는 10개라고 가정
![[WebDevelopment]pagination - undefined - pagination을 위한 공식 [WebDevelopment]pagination - undefined - pagination을 위한 공식](https://blog.kakaocdn.net/dn/nwKXM/btrSaJlbQHZ/KJ6DkqKXP86drb4xnOHnWK/img.jpg)
끝페이지(endPage)는 전체 데이터수(total)에 의해 영향을 받음, 예를 들어 10개씩 보여주는 경우 전체 데이터 수가 80개라고 가정하면 끝번호는 10이 아닌 8이 되어야 함
그러므로 끝번호(endPage)와 한페이지당 출력되는 데이터의 수(amount)의 곱이 전체데이터 수보다 크다면 끝번호는 다시 전체 데이터를 이용해 다시 계산되어야 함
먼저 전체 데이터 수(total)를 이용해서 실제 끝 페이지(realEnd)가 몇 번까지 되는지를 계산한 뒤 만일 실제 끝 페이지가 구해둔 끝번호보다 작다면
실제 끝페이지값을 끝페이지값에 대입해야 함
이전(prev)의 경우는 시작번호(startPage)가 1보다 큰 경우라면 존재하면 됨, 시작번호가 1보다 큰 경우라면 시작번호가 11인 경우부터 해당됨
다음(next)의 경우는 실제 끝번호(realEnd)가 끝번호(endPage)보다 큰 경우에만 존재하면 됨
위와 같이 back단(java)에서 구한 데이터를 가지고 controller에서 model에 담은 뒤 화면단(jsp)으로 보낸 후 화면단에서 해당 데이터를 표시해주면 됨
출처: 코드로 배우는 스프링 웹 프로젝트(개정판)
![[WebDevelopment]pagination - undefined - 출처: 코드로 배우는 스프링 웹 프로젝트(개정판) [WebDevelopment]pagination - undefined - 출처: 코드로 배우는 스프링 웹 프로젝트(개정판)](https://t1.daumcdn.net/keditor/emoticon/friends1/large/025.gif)
'IT > development' 카테고리의 다른 글
[Spring]spring REST(Representational State Transfer) (1) | 2022.11.27 |
---|---|
[Spring]UriComponentsBuilder(서버단에서 동적으로 URI 생성) (0) | 2022.11.27 |
[Spring]spring 프레젠테이션(웹)계층의 CRUD 구현 시 MockTest (0) | 2022.11.27 |
[Spring]단위테스트 jUnit (0) | 2022.11.27 |
[Spring]spring 404 에러 페이지 처리 (0) | 2022.11.27 |
댓글