본문 바로가기
✨ Back-end/Spring-Boot

[Spring] 보드게시판 만들기(5) 게시글 상세보기

by 환풍 2023. 3. 25.
728x90

 

 


상세조회

위와 같이 해당 제목 글을 누르면 상세보기 페이지로 이동해서 해당 게시글 정보를 조회하는 상세보기를 해보려고한다.

 

위 기능도 쿼리를 작성해서 데이터를 넘겨줘야 하는 부분이므로, 가장 첫번째로 mapper로 가서 쿼리를 작성하자.

 

board-mapper.xml

게시글 상세 조회를 위해서 select 태그를 이용했고, resultMap은 select 조회시 type과 Map으로 나뉘는데, 

현재 여러 데이터를 받아와야 하므로 resultMap으로 board 정보를 받아왔다.

 

BoardService 인터페이스

매개변수 및 리턴 타입 결정 방법(우선적으로 실행 시 쿼리를 작성)
매개변수 : 쿼리 실행 시 빈 값을 채울 용도
1. 쿼리에서 채워 줄 값이 없을 경우 : 매개변수 없음
2. 채워줄 값이 하나일 경우
 2-1) 채워줄 값이 숫자인 경우 : 매개변수 int형 하나
 2-2) 채워줄 값이 문자인 경우 : 매개변수 String형 하나
3. 채워줄 값이 여러개인 경우 : 매개변수는 VO 객체.
리턴타입 : 쿼리 실행 결과를 어떻게 받아올지에 대한 정의
INSERT, UPDATE, DELETE 쿼리 실행 결과는
리턴타입을 int 혹은 void 사용하면됨. int로 받을 땐 return 필요o  void는 필요x
SELECT 쿼리 결과의 리턴타입은 크게 두 가지로 나뉨.
조회결과 데이터가 무조건 한줄만 조회 : VO 객체.
조회 결과 데이터가 0줄이상 가변적일 경우 : List<VO> 객체.

BoardServiceImpl  클래스

boardService에 상속을 받았다는 의미로 @Service를 사용해주었고,

sqlSession에 자동으로 객체를 만들어 주기 위해 @Autowired 타입, 자료형을 이용하여 의존성을 주입한다.

이후 보드 게시글 상세출력 쿼리를 작성하는데, 이전 mapper에서 데이터 하나를 뽑아준 boardNum은 하나이므로 selectOne으로 sqlSession에 넣어준 뒤 컨트롤러로 return 시킨다.

 

BoardController 컨트롤러

위와 같이 상세정보 컨트롤러에서 데이터 boardNum을 매개변수에서 사용했고, model이라는 객체에 저장시키기 위해 함께 매개변수로 사용했다. 파란 박스의 ReplyVO와 댓글 목록 조회는 아직 사용하지 않을 기능이므로 제외하자.

콘솔 창을 보면 해당 쿼리가 데이터에 잘 넣어져 작동하는 것을 확인할 수 있다. 이제 이것을 html에 뿌려주면 된다.

위 컨트롤러에서 board_detail.html로 보냈으니, html에서 정보를 뽑아보자.

이때 boardNum에서  조회된 데이터를 boardVO라는 이름으로 model 객체에 저장했다. 

board_detail.html

boardVO라는 이름으로 저장된 데이터들을 th 타임리프 구문을 이용하여 ${ } 으로 자바와 같이 뽑아내줄 수 있다.

 

상세보기 화면

다음 포스팅에서는 댓글 등록 버튼을 눌러 댓글 기능을 추가해보자.

반응형

댓글