[Spring] 댓글 처리를 위한 영속 속성
댓글을 추가하기 위해 댓글 처리 테이블을 설계합니다. 이전에 작성한 글을 참고하여 댓글 테이블을 작성합니다.
https://lifere.tistory.com/172
ReplyVO 클래스 추가
tb_reply 테이블을 참고해서 com.project.domain 패키지 아래 ReplyVO 클래스를 추가합니다.
ReplyVO 클래스
ReplyMapper 클래스와 XML 처리
com.project.mapper 패키지에 ReplyMapper 인터페이스를 처리하고, XML 파일을 생성합니다.
실제 SQL은 'src/main/resources' 폴더 아래 ReplyMapper.xml 파일을 작성해서 처리합니다.
ReplyMapper 테스트
ReplyMapper 타입의 객체가 정상적으로 사용 가능한지 확인합니다.
ReplyMapperTests 클래스
ReplyMapperTests 테스트 클래스 실행 결과
댓글 처리 CRUD
■ 등록
먼저 ReplyMapper 인터페이스의 메서드들은 만들어 줍니다.
ReplyMapper 인터페이스
ReplyMapper.xml 작성
ReplyMapperTests 클래스 작성, 등록 테스트
테스트 메서드 실행 전
테스트 메서드 실행 후
■ 조회
ReplyMapper 인터페이스
ReplyMapper.xml 작성
ReplyMapperTests 클래스 / 테스트 코드 실행결과
■ 삭제
ReplyMapper 인터페이스
ReplyMapper.xml 작성
ReplyMapperTests 클래스 / 테스트 코드 실행결과
seq_rno가 10번인 데이터가 삭제된 것을 확인할 수 있습니다.
■ 수정
ReplyMapper 인터페이스
ReplyMapper.xml 작성
ReplyMapperTests 클래스 / 테스트 코드 실행결과
데이터베이스에서도 내용이 업데이트된 것을 확인할 수 있습니다.
■ @Param어노테이션과 댓글 목록
댓글의 목록과 페이징 처리는 기존의 게시물 페이징 처리와 유사하지만, 추가적으로 특정한 게시물의 댓글들만을 대상으로 하기 때문에 추가로 게시물의 번호가 필요합니다.
MyBatis는 두 개 이상의 데이터를 파라미터로 전달하기 위해서는 1) 별도의 객체로 구성하거나, 2) Map을 이용하는 방식, 3) @Param을 이용해서 이름을 사용하는 방식입니다. 여러 방식 중에 가장 간단하게 사용할 수 있는 방식이 @Param을 이용하는 방식입니다. @Param의 속성값은 MyBatis에서 SQL을 이용할 때 '#{ }'의 이름으로 사용이 가능합니다.
페이징 처리는 기존과 동일하게 Criteria를 이용합니다. 추가적으로 해당 게시물 번호 파라미터를 전달하도록 ReplyMapper를 구성합니다.
ReplyMapper.xml 작성
XML에서 '#{seq_bno}가 @Param("seq_bno")와 매칭되어서 사용되는 점에 주목해야 합니다.
ReplyMapperTests 클래스 / 테스트 코드 실행결과
위에서 777에 대한 글은 2개만 있었던 것을 확인할 수 있습니다.
댓글 처리를 위한 영속 속성에 대해 알아보았습니다.
'java, spring' 카테고리의 다른 글
[Spring] 댓글 처리 Front-End - 세팅편 - (0) | 2021.08.09 |
---|---|
[Spring] 댓글 처리, 서비스 영역과 Controller 처리 (feat. @RestController) (0) | 2021.08.03 |
[Spring] REST 방식 (0) | 2021.07.29 |
[Spring] UriComponentsBuilder를 이용하는 링크 생성 (0) | 2021.07.25 |
[Spring] 화면에서 검색 조건 처리 (0) | 2021.07.25 |