[힐링 메시지에 댓글 조회 API]

1. 힐링 메시지에 댓글 조회

다음과 같이 댓글을 조회하는 API이다.

불러오는 값은 다음 DTO리스트이다.

1. 멤버 프로필 이미지
2. 멤버 닉네임
3. 작성 날짜
4. 댓글 내용

2. Trouble Solving

3. 구현

3.1 Controller

 /**
     * 힐링 메시지에 댓글 조회 API
     * @param request 사용자 요청
     * @param messageId 댓글을 조회하고자 하는 힐링 메시지 고유번호
     * @return CommentResponse DTO
     * @see CommentResponse 댓글 등록 후 반환 DTO
     */
    @Operation(summary = " 힐링 메시지에 댓글 조회 API")
    @GetMapping("/comment/{messageId}")
    public ResponseEntity<List<CommentResponse>> getComment(HttpServletRequest request,
                                                            @PathVariable("messageId") Long messageId){

        /* 댓글 조회 */
        return ResponseEntity.ok(healingMessageService.getComment(request,messageId));
    }

받는 매개변수는 request와 messsageid밖에 없다.

해당 게시글에 있는 모든 댓글들을 가져오므로,
해당 게시글의 고유번호만 가져오면 충분하다.

3.2 Service

3.2.1 Interface

/**
     * 힐링 메시지에 댓글 조회 메서드
     * @param request 사용자 요청
     * @param messageId 댓글을 조회하고자 하는 힐링 메시지 고유 번호
     * @return CommentResponse DTO
     * @see CommentResponse 댓글 등록 후 반환 DTO
     */
    List<CommentResponse> getComment(HttpServletRequest request, Long messageId);

3.2.2 Implements

 /**
     * 힐링 메시지에서  댓글 조회 API
     * @param request 사용자 요청
     * @param messageId 댓글을 조회하고자 하는 힐링 메시지 고유 번호
     * @return CommentResponse DTO
     * @see CommentResponse
     */
    @Override
    public List<CommentResponse> getComment(HttpServletRequest request, Long messageId) {

        List<CommentResponse> commentResponsesList = healingMessageMapper.getComment(messageId);

        return commentResponsesList;
    }

3.3 Mapper

3.3.1 mapper

 /**
     * 힐링 메시지에서 댓글 조회
     * @param messageId 댓글을 조회하고자 하는 힐링 메시지 고유 번호
     * @return CommentResponse DTO
     * @see CommentResponse
     */
    List<CommentResponse> getComment(Long messageId);

3.3.1 Xml

 <!-- 힐링 메시지에 댓글 조회 -->
    <select id="getComment" resultType="website.server.Domain.HealingProgram.HealingService.HealingMessageSharing.DTO.Response.CommentResponse">

        SELECT
            hmc.commentId,
            m.profile_image_path AS profileImagePath,
            m.nickname,
            hmc.content,
            hmc.createdDate
        FROM
            healing_message_comment hmc
        JOIN
            member m ON hmc.userNumber = m.userNumber
        WHERE
            hmc.messageId = #{messageId}
        ORDER BY
            hmc.createdDate ASC

두개의 테이블을 userNumber로 조인한다.
댓글 테이블과 멤버 테이블을 조인한다.

그리고 최종적으로 오름차순으로 조회하는 SQL문으로 마무리 한다.

4. 결과

profile
내가 있는 그 조직에서 가장 성실하기만 하자

0개의 댓글