inblog logo
|
vosw1
    Spring

    34. 댓글 구현 : 댓글 쓰기

    Feb 15, 2024
    34. 댓글 구현 : 댓글 쓰기

    1. 댓글 확인하기

    • 로그인 한 사람만 댓글을 쓸 수 있음
    • 게시판 글쓰기처럼 댓글 작성하기
    • 게시판 목록처럼 댓글 리스트가 구현하기
    • 게시판 삭제하기처럼 기본으로 비 활성화하기
    user의 객체와 sessionUser가 같을 경우 삭제 버튼 활성화하기
    notion image
    notion image
    • userId는 session에 있음
    • boardId는 받아야 하는데 눈에 보일 필요가 없음
    • board.id는 확인이 필요함!
    notion image
    • board.id는 확인 완료
    notion image
    notion image
     

    2. ReplyRequest에서 SaveDTO 만들기

    • 댓글 내용(content) 담을 가방 만들기
    • userId는 session에서 가져올 것임
    package shop.mtcoding.blog.reply; import lombok.Data; public class ReplyRequest { @Data public static class SaveDTO { private String comment; private int id; private int boardId; // userId는 session에서 가져올 것임 } }
     

    3. ReplyRepository 만들기

    • replySave() 구현하기
    replt_tb에 insert하는 쿼리문 작성하기
    package shop.mtcoding.blog.reply; import jakarta.persistence.EntityManager; import jakarta.persistence.Query; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; @RequiredArgsConstructor @Repository public class ReplyRepository { private final EntityManager em; @Transactional public void save(ReplyRequest.SaveDTO requestDTO, int userId) { Query query = em.createNativeQuery("insert into board_tb(comment, board_id, user_id, created_at) values(?,?,? now())"); query.setParameter(1, requestDTO.getComment()); query.setParameter(2, requestDTO.getBoardId()); query.setParameter(3, userId); query.executeUpdate(); } }
     

    4. ReplyController 만들기

    • 인증 체크하기
    로그인 한 사람만 댓글을 달 수 있음
    로그인 안 했으면 로그인 페이지로 리다이렉션
    package shop.mtcoding.blog.reply; import jakarta.servlet.http.HttpSession; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import shop.mtcoding.blog.user.User; // 댓글 쓰기, 댓글 삭제, 댓글 목록보기 @RequiredArgsConstructor @Controller public class ReplyController { private final HttpSession session; private final ReplyRepository replyRepository; @PostMapping("/reply/save") public String save(ReplyRequest.SaveDTO requestDTO) { System.out.println(requestDTO); // 1. 인증 체크 User sessionUser = (User) session.getAttribute("sessionUser"); System.out.println("sessionUser:" + sessionUser); if (sessionUser == null) { return "redirect:/loginForm"; } // 2. 유효성 검사(님들이 하세요) // 핵심코드 replyRepository.save(requestDTO, sessionUser.getId()); return "redirect:/board/" + requestDTO.getBoardId(); }
    notion image
    notion image
    • 아직 페이지 구현 안해서 오류나는게 맞음!
    notion image
     
    Share article

    vosw1

    RSS·Powered by Inblog