Backend
home
🎨

페이지처리를 위한 DTO 설계

페이징 처리 설계

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
복사