java, spring

[Spring] 댓글 처리를 위한 영속 속성

isaac.kim 2021. 8. 1. 04:43
728x90
반응형

[Spring] 댓글 처리를 위한 영속 속성

댓글을 추가하기 위해 댓글 처리 테이블을 설계합니다. 이전에 작성한 글을 참고하여 댓글 테이블을 작성합니다.

 

https://lifere.tistory.com/172

 

[MariaDB] 댓글 처리 테이블 : 외래 키에 대해 테이블 다뤄보기

[MariaDB] 댓글 처리 테이블 : 외래 키에 대해 테이블 다뤄보기 테이블 생성하기 seq_bno 값을 외래 키로 정합니다. tb_board 테이블의 seq_bno 값을 참조합니다. 다음은 SQL 쿼리문 외래 키 및 제약조건에

lifere.tistory.com

 

 

 

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개만 있었던 것을 확인할 수 있습니다.


댓글 처리를 위한 영속 속성에 대해 알아보았습니다.

728x90
반응형