페이징 처리 2 (DTO)

Hwawon_2·2022년 3월 21일
0

DAO에서 총페이지를 구하는 로직을 먼저 구합니다.

전체 게시물 몇개인지 확이하는 쿼리문

BoardListService
페이지 버튼 생성을 위한 글 개수 확인하기

kr.co.ict - BoardDTO 클라스 생성

원래 VO(value dbject)와 DTO(data transfer object)는 큰 차이는 두지 않고 사용합니다.
굳이 차이를 두자면 VO는 DB테이블 형태를 그대로 전달할 때
DTO는 DB에서 꺼넨 데이터가 가공되어 전달할 때 쓰는것을 지칭할때 씁니다.
다만 DTO와 VO는 엄격하게 구분되지 않고 프로그래머에 따라서는
그냥 DTO를 VO와 완전히 동일하게 쓰는 경우도 있으므로
사용하는 사람이 부르고 싶은대로 부르셔도 무방합니다.

변수선언

생성자
생성자 생성시 모든 정보를 자동으로 구하도록 처리
(boardCount, currentPage 두개의 정보가 필요)

총 글 갯수와, 현재 조회중인 페이지 정보를 입력받아 아래에 깔릴 버튼개수, 현재 깔려야하는 번호대를 구합니다

글이 없다면

(전체 글이 == 0 이라면
전체 페이지 0
시작 페이지 0
끝 페이지 0)

글이 있다면
<<게시글 개수를 이용해 전체 페이지 갯수 구하기(totalPages값 구하기)>>

전체 글 (boardCount)나머지 10(BOARD_NUM)이 0이라면
전체 페이지 개수는 전체글 나누기 10(BOARD_NUM);
만약 0이 아니다
전체 페이지 개수는 (전체글 나누기 10(BOARD_NUM)) 더하기 1;

<<현재 조회중인 페이지 그룹의 시작 페이지 구하기(startPage값 구하기)>>

  • 시작, 끝 페이지는 게시글이 아닌 아래 깔릴 페이지 버튼이므로 NAV_NUM을 사용합니다.

    int navNum = 0;
    if(현재 페이지 % 10 == 0 이라면)
    (10번대 페이지는 자신이 속한 그룹보다 페이지 식별 숫자가 1크게 나옴)
    navNum = (현재페이지 - 1 ) / 10(NAV_NUM); //(50번 페이지의 경우 41~50그룹에 속하므로 실제로는 4가 나와야 하므로)
    else
    navNum = 현재페이지 / 10(NAV_NUM); //(51페이지 -1 / 10해도 5가 나옴, 50 -1 / 10 하면 4가나옴.)

    // navNum = (currentPage - 1) / 10; 결국 이거임
    식별번호 navNum이 구해졌으면 10 + 1을 해서 시작번호를 구합니다.

    시작페이지 = (navNum
    10) +1;

<< 현재 조회중인 페이지 그룹의 끝페이지 구하기(endPage값 구하기)>>


끝 페이지 = 시작페이지 + (10 - 1);
if만약 (끝페이지 > 전체페이지 )
끝페이지는 전체페이지;


닫아주면 생성자 끝

set,getter 수동으로 만들어줌

디버깅을 위한 toString

BoardListService
DTO를 생성해주시고 바인딩까지 해주세요.

조회해보면
50페이지

잘 나오는것을 확인할 수 있다.

바인딩된 정보를 boardList.jsp 하단에 디버깅시켜주세요.

실행해보면

확인할 수 있다.

BoardDAO
List boardList = new ArrayList<>();
LIMIT 뒤쪽 숫자가 페이지당 보여줄 글 개수이므로 DTO의 상수와 함께 고쳐야 함.

profile
코딩 일기장

0개의 댓글