포스트 전체 조회하기

Sol's·2023년 1월 11일

프로젝트

목록 보기
10/16

이제 포스트를 작성하는 기능을 구현했으니 전체 조회하는 기능을 만들어보자.
Get은 Security 설정시 아무 설정을 해주지 않아서 모든 사용자가 접근 가능하다.

Security 설정을 회원가입을 구현할때 해주었다.

포스트 전체 조회기능

Controller

  //list 목록 최신순 
    @ApiOperation(value = "게시글 전체조회기능")
    @GetMapping("")
    public Response<Page<PostOneResponse>> getPosts(@PageableDefault(size = 20, sort = {"id"}, direction = Sort.Direction.DESC) Pageable pageable){
        return Response.success(postService.getPostsList(pageable));
    }

Service

/**
     * 전체조회
     */
    public Content getPostsList(Pageable pageable) {
        // Pageing을 해서 담는다.
        Page<Post> list = postRepository.findAll(pageable);
        // Entity에서 Dto로 Stream을 통해 담는다.
        List<PostOneResponse> listResponse = list.stream()
                .map(post -> PostOneResponse.fromEntity(post)).collect(Collectors.toList());

        //컨텐츠 객체에 담아서 리턴
        Content content = new Content(listResponse, pageable);
        return content;
    }

Dto

@AllArgsConstructor
@NoArgsConstructor
@Builder
@Getter
public class PostOneResponse{
    private Long id;
    private String title;
    private String body;
    private String userName;

    private LocalDateTime createdAt;
    private LocalDateTime lastModifiedAt;

    public static PostOneResponse fromEntity(Post post) {
        return PostOneResponse.builder()
                .id(post.getId())
                .title(post.getTitle())
                .body(post.getBody())
                .userName(post.getUser().getUserName())
                .createdAt(post.getCreatedAt())
                .lastModifiedAt(post.getLastModifiedAt())
                .build();
    }
}

Repository

public interface PostRepository extends JpaRepository<Post, Long> {
}

리스트가 잘 나오는것을 확인 할 수 있다.

profile
배우고, 생각하고, 행동해라

0개의 댓글