PageDto의전체 코드
@Getter
@NoArgsConstructor
public class PageDto<T> {
private List<T> data;
private PageInfo pageInfo;
public PageDto(List<T> data, Page page) {
this.data = data;
this.pageInfo = new PageInfo(page.getNumber()+1, page.getSize(), page.getTotalPages(), page.getTotalElements());
}
@Getter
private class PageInfo{
private int pageNumber;
private int size;
private int totalPages;
private long totalElements;
public PageInfo(int pageNumber, int size, int totalPages, long totalElements) {
this.pageNumber = pageNumber;
this.size = size;
this.totalPages = totalPages;
this.totalElements = totalElements;
}
}
}
부분적으로 어떤 기능을 하는지 알아보자
@Getter
@NoArgsConstructor
public class PageDto<T> {
private List<T> data;
private PageInfo pageInfo;
public PageDto(List<T> data, Page page) {
this.data = data;
this.pageInfo = new PageInfo(page.getNumber()+1, page.getSize(), page.getTotalPages(), page.getTotalElements());
}
- data: 페이징 처리된 데이터를 담는 리스트(List)이다. 제네릭 타입으로 T를 사용하여 어떤 타입의 데이터도 담을 수 있기 때문에 Trade를 담을 수도 Commission을 담을 수 있다.
- pageInfo: 페이징 정보를 담는 PageInfo 객체.
- PageDto(List<T> data, Page page): 데이터 리스트와 Page 객체를 받아서 data와 pageInfo를 초기화. Page 객체는 Spring Framework에서 제공하는 페이징 처리를 위한 클래스다.
@Getter
private class PageInfo{
private int pageNumber;
private int size;
private int totalPages;
private long totalElements;
public PageInfo(int pageNumber, int size, int totalPages, long totalElements) {
this.pageNumber = pageNumber;
this.size = size;
this.totalPages = totalPages;
this.totalElements = totalElements;
}
}
- pageNumber: 현재 페이지 번호를 나타내는 필드.
- size: 한 페이지에 보여줄 데이터의 수를 나타내는 필드.
- totalPages: 전체 페이지 수를 나타내는 필드.
- totalElements: 전체 데이터의 수를 나타내는 필드.
- PageInfo(int pageNumber, int size, int totalPages, long totalElements): 페이지 정보를 초기화하는 생성자.
PageDto를 사용한 전체 조회
@GetMapping
public ResponseEntity readAllTrade(Pageable pageable) {
Page<Trade> tradePage = tradeService.readTrades(pageable);
List<Trade> tradeList = tradePage.getContent();
return new ResponseEntity<>(new PageDto<>(tradeMapper.tradesToResponseDto(tradeList), tradePage), HttpStatus.OK);
}
포스트맨으로 잘 적용되는지 확인해보자
잘 적용되는 모습이다.
Param을 살펴보면,
- page : 보고싶은 페이지의 번호
- size: 한 페이지에 보여줄 데이터의 수.
- sort: 기준을 삼을 인자와, 정렬방식(asc, desc)
'SPRING' 카테고리의 다른 글
Spring과Spring Boot의 간략한 차이점 - (spring - 2) (0) | 2023.12.22 |
---|---|
서버란 무엇일까? - (Spring - 1) (0) | 2023.12.22 |
유효성 검사 어노테이션 모음 (0) | 2022.12.16 |
정규 표현식 모음 (0) | 2022.12.16 |
필드 (0) | 2022.11.06 |