본문 바로가기
프로젝트/게시판

[SpringBoot] 게시판 10. 페이징 처리 util 클래스 만들기

by qkzkdo 2023. 8. 13.
728x90

페이징 처리 중복코드 제거를 위한 페이징 유틸 클래스 만들기

 

import lombok.Getter;

@Getter
public class PageData {

    private int tot; //페이지 총 개수 
    private int from; //출력되는 페이지 시작번호
    private int to; //출력되는 페이지 마지막 번호

    //더보기 기능 구현
    private boolean hasNext; //다음 페이지가 있는지 여부
    private int page; //현재 페이지 번호

    //페이지 정보를 생성하는 정적 메서드. PageData 객체를 생성할 수 있다.
    /**
     * @param page : 페이지번호
     * @param limit : 페이지당 게시글 수
     * @param rowCount : 총 게시글 수
     * @param RANGE : 표현되는 페이지번호 개수 default RANGE=10
     * @return from(출력되는 페이지 시작번호), to(출력되는 페이지 마직막 번호), tot(페이지 총 개수)
     */
    public static PageData create(int page,  int limit, int rowCount) {
        return new PageData(page, limit, rowCount);
    }

    //페이지 정보를 생성하는 정적 메서드. 페이지 범위를 추가로 지정할 수 있다.
    /**
     * 
     * @param page : 페이지 번호
     * @param limit : 페이지당 게시글 수
     * @param rowCount : 총 게시글 수
     * @param RANGE : 한 페이지에 표현되는 페이지 번호(기본값은 10)
     * @return from(출력되는 페이지 시작번호), to(출력되는 페이지 마지막 번호), tot(페이지 총 개수)
     */
    public static PageData create(int page, int limit, int rowCount, int RANGE) {
        return new PageData(page, limit, rowCount, RANGE);
        //create 메서드는 페이지 정보를 생성하는 정적 메서드
    }

    //페이지 정보를 초기화하는 역할을 하는 생성자
    public PageData(int page, int limit, int rowCount, int RANGE) {

        //rowCount 값이 limit * page보다 크면 true를, 그렇지 않으면 false를 hasNext에 할당
        this.hasNext=rowCount > limit*page?true:false;
        this.page = page; //현재 페이지 번호

        this.tot = rowCount/limit; //총 페이지 개수
        //100 / 10 : 10개
        if(rowCount % limit > 0) this.tot++; //나머지가 존재하면 1 증가

        //출력되는 페이지 번호 범위를 나타냄
        int rangeNo = page/RANGE; //1~9 : 0 10 : 1 //1~9페이지는 0번 10~ 1번
        // 1/10 현재 페이지 번호를 한 페이지에 표현되는 페이지 번호 개수로 나눈 몫을 구함
        if(page % RANGE > 0)rangeNo++; 


        this.to = RANGE * rangeNo; //페이지 마지막 번호
        this.from = this.to - RANGE+1; //페이지 시작 번호

        //마지막 번호가 총 페이지 개수를 초과한다면, 마지막 번호를 총 페이지 개수로 조정
        if(this.to > this.tot) this.to = this.tot;

    }

    //RANGE를 10으로 지정하여 페이지 정보를 초기화하는 생성자
    private PageData(int page,  int limit, int rowCount){
        //기본 생성자에서 다른 생성자를 호출
        this(page, limit, rowCount, 10);	
    }

}

 

@param 주석은 메서드의 파라미터에 대한 설명을 제공하는 역할을 한다. JavaDoc 형식으로 작성된 주석으로서, 개발자가 메서드를 사용할 때 파라미터의 의미와 역할을 이해할 수 있도록 도움을 준다.

728x90