페이징 처리 설계
•
PageResponseDTO
package org.zerock.apiserver.dto;
import lombok.Data;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@Data
public class PageResponseDTO<E> {
private List<E> dtoList;
private List<Integer> pageNumList;
private PageRequestDTO pageRequestDTO;
private boolean prev, next;
private int totalCount, prevPage, nextPage, totalPage, current;
public PageResponseDTO(List<E> dtoList, PageRequestDTO pageRequestDTO, long total) {
this.dtoList = dtoList;
this.pageRequestDTO = pageRequestDTO;
this.totalCount = (int) total;
// 끝페이지 end
int end = (int)(Math.ceil(pageRequestDTO.getPage() / 10.0)) * 10;
// 시작 페이지
int start = end - 9;
// 진짜 마지막 페이지
int last = (int)(Math.ceil((totalCount / (double) pageRequestDTO.getSize())));
end = (end > last) ? last : end;
this.prev = start > 1;
this.next = totalCount > end + pageRequestDTO.getSize();
// 박싱
this.pageNumList = IntStream.rangeClosed(start, end).boxed().collect(Collectors.toList());
this.prevPage = prev ? start - 1 : 0;
this.nextPage = next ? end + 1 : 0;
}
}
Java
복사
•
PageRequestDTO
package org.zerock.apiserver.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
@SuperBuilder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageRequestDTO {
@Builder.Default
private int page = 1;
private int size = 10;
}
Java
복사