본문 바로가기

개발일지

20231218 - 페이징 구현

게시물 목록 조회 기능에서 페이징 기능을 추가하여 구현해 보았다.

 

//Controller.java

@GetMapping("")
    public Page<PostListResponseDto> getPostList(@RequestParam("page") int page,
                                                 @RequestParam("size") int size,
                                                 @RequestParam("sortBy") String sortBy,
                                                 @RequestParam("isAsc") boolean isAsc
                                                 ){
        return postService.getPostList(page,size,sortBy,isAsc);
    }

 

컨트롤러단에서 파라미터로 페이징 기능에 필요한 데이터들을 받아온다.

 

public Page<PostListResponseDto> getPostList(int page, int size, String sortBy, boolean isAsc) {
    Sort.Direction direction = isAsc ? Sort.Direction.ASC : Sort.Direction.DESC;
    Sort sort = Sort.by(direction, sortBy);
    Pageable pageable = PageRequest.of(page, size, sort);
    
    Page<Post> postList = postRepository.findAll(pageable);
    
    return postList.map(PostListResponseDto::new);
    
}

 

Page <Post>를 Page <PostListResponseDto>로 변환시켜서 반환해 준다.

 

+추가

//Controller.java

@GetMapping("")
    public List<PostListResponseDto> getPostList(@RequestParam("page") int page,
                                                 @RequestParam("size") int size,
                                                 @RequestParam("sortBy") String sortBy,
                                                 @RequestParam("isAsc") boolean isAsc
                                                 ){
        return postService.getPostList(page,size,sortBy,isAsc);
    }
public List<PostListResponseDto> getPostList(int page, int size, String sortBy, boolean isAsc) {
    Sort.Direction direction = isAsc ? Sort.Direction.ASC : Sort.Direction.DESC;
    Sort sort = Sort.by(direction, sortBy);
    Pageable pageable = PageRequest.of(page, size, sort);
    
    Page<Post> postList = postRepository.findAll(pageable);
    
    return postList.map(PostListResponseDto::new).getContent();
    
}

 

List로 변환해 반환해 준다.