MyBatis

3. 게시판 목록 만들기와 페이징/TDD (1) - 패스트캠퍼스 백엔드 부트캠프 3기

gkss2tpt 2025. 2. 27. 19:23

1. 게시물 목록 페이징

 

2. LIMIT[offset, ] row_count

  • offset -> 얼마나 떨어져있는가
  • row_count -> 읽어올 row의 수

  • PageHanlder 클래스
@ToString
public class PageHandler {
    int totalCnt;   // 총 게시물 갯수
    int pageSize;   // 한 페이지의 크기
    int navSize = 10;    // 페이지 내비게이션의 크기
    int totalPage;  // 전체 페이지의 갯수
    int page;       // 현재 페이지
    int beginPage;  // 내비게이션의 첫번째 페이지
    int endPage;    // 내비게이션의 마지막 페이지
    boolean showPrev;   // 이전 페이지로 이동하는 링크를 보여줄 것인지의 여부
    boolean showNext;   // 다음 페이지로 이동하는 링크를 보여줄 것인지의 여부

    public PageHandler(int totalCnt, int page){
        this(totalCnt, page, 10);
    }

    public PageHandler(int totalCnt, int page, int pageSize){
        this.totalCnt = totalCnt;
        this.page = page;
        this.pageSize = pageSize;

        totalPage = (int)Math.ceil(totalCnt / (double)pageSize);
        beginPage = page > navSize ? page/navSize*navSize+1 : 1;
        endPage = Math.min(beginPage + navSize-1, totalPage);
        showPrev = beginPage != 1;
        showNext = endPage != totalPage;
    }

    void print(){
        System.out.print("page = ");
        System.out.print(showPrev ? "[PREV] " : "");
        for (int i = beginPage; i <= endPage; i++) {
            System.out.print(i+" ");
        }
        System.out.println(showNext ? "[NEXT]" : "");
    }
}
  • Test
public class PageHandlerTest {
    @Test
    public void test() {
       PageHandler ph = new PageHandler(255, 25);
       ph.print();
       assertTrue(ph.beginPage==21);
       assertTrue(ph.endPage==26);
        System.out.println("ph = " + ph);
    }
}
  • 성공

public class PageHandlerTest {
    @Test
    public void test() {
       PageHandler ph = new PageHandler(250, 1);
       ph.print();
       assertTrue(ph.beginPage==1);
       assertTrue(ph.endPage==10);
        System.out.println("ph = " + ph);
    }
}
  • 성공