Pagination (페이지 네이션)
데이터를 정렬기준, 페이지 크기, 몇번째 페이지인지를 토대로 정보를 전달해 주는 것
변수 설명
size : 한페이지당 담길 데이터의 양
page : size를 기준으로 몇번째 페이지 인지
sort : 무엇을 기준으로 정렬할 것인지
// 자신의 게시글들 조회 (1페이지당, 10개)
@GetMapping
public ApiResponsePost getPosts(
@AuthenticationPrincipal UserDetailsImpl userDetails,
Pageable pageable
){
log.info("size = {}, page = {}, sorted = {}", pageable.getPageSize(), pageable.getPageNumber(), pageable.getSort());
Long memberId = userDetails.getId();
return postService.getPosts(memberId,pageable);
}
@Transactional(readOnly = true)
public ApiResponsePost getPosts(Long memberId, Pageable pageable) {
Member member = findByMemberId(memberId);
Page<Post> posts = postRepository.findAllByMember(member,pageable);
List<PostResponseDto> postList = posts.map(PostResponseDto::new).stream().toList();
return new ApiResponsePost(ApiResponsePostEnum.POST_GET_SUCCESS,postList);
}
// 자신의 게시글들 조회 (1페이지당, 10개)
@GetMapping("/myList")
public ApiResponsePost getPosts(
@AuthenticationPrincipal UserDetailsImpl userDetails,
@RequestParam (required = false, defaultValue = "1") int page,
@RequestParam (required = false, defaultValue = "10") int size,
@RequestParam (required = false, defaultValue = "desc") String sort
){
Long memberId = userDetails.getId();
Sort.Direction direction = Sort.Direction.fromString(sort);
Pageable pageable = PageRequest.of(page, size, direction,"createdAt");
return postService.getPosts(memberId,pageable);
}
https://velog.io/@soluinoon/Spring-Pageable-%ED%8C%8C%ED%97%A4%EC%B9%98%EA%B8%B0