제목에 있는 글을 누르면 상세 정보 보기 폼으로 이동해보려고 한다.
board_list.jsp
아까 마지막으로 데이터를 출력했던 board_list.jsp로 돌아와준다. 나는 제목을 누르면 페이지가 이동하게 끔 만들것이다.
따라서 ${ board.title } 앞에 a 태그를 주어 경로를 지정한다. 여기서 끝이 아니라 '?'를 주어 조건을 추가해준다.
boardNum의 데이터가 ${board.boardNum}의 데이터와 같은 값만 boardDetail.bo에 가지고 간다.
BoardController.java 서블릿
board 컨트롤 서블릿으로 돌아와 board_list.jsp에서 전달해준 boardNum을 문자열로 받아온다.
이후 integer.parseInt를 이용해 자료형을 int형으로 변환해준다. 이후 어디로감? mapper... 이젠 지겹지 않을까
board-mapper.xml
이곳에서 select를 이용해 상세조회 쿼리를 작성한다. select를 사용했기 때문에 id 뒤에 resultMap의 값도 위에서 만들었던 값과 맞춰줘야하고, 상세정보 보기를 글 번호가 맞는 것끼리 조회해주어야 하기 때문에 Num 값으로 맞는지 조건을 준다.
매개변수 및 리턴 타입 결정 방법(우선적으로 실행 시 쿼리를 작성)
매개변수 : 쿼리 실행 시 빈 값을 채울 용도
1. 쿼리에서 채워 줄 값이 없을 경우 : 매개변수 없음
2. 채워줄 값이 하나일 경우
2-1) 채워줄 값이 숫자인 경우 : 매개변수 int형 하나
2-2) 채워줄 값이 문자인 경우 : 매개변수 String형 하나
3. 채워줄 값이 여러개인 경우 : 매개변수는 DTO 객체.
리턴타입 : 쿼리 실행 결과를 어떻게 받아올지에 대한 정의
INSERT, UPDATE, DELETE 쿼리 실행 결과는
리턴타입을 int 혹은 void 사용하면됨.
SELECT 쿼리 결과의 리턴타입은 크게 두 가지로 나뉨.
조회결과 데이터가 무조건 한줄만 조회 : DTO 객체.
조회 결과 데이터가 0줄이상 가변적일 경우 : List<DTO> 객체.
BoardService.java 인터페이스
인터페이스로 돌아와 게시글 상세조회 메소드를 만든다. 상세 조회 한줄만 뜨므로 DTO 객체를 사용할 수 있고,
boardNum 데이터 하나만 사용하기 때문에 자료형을 int로 받아와준다.
BoardServiceImpe.java 클래스
인터페이스에서 생성한 메소드를 클래스로 가지고와 오버라이딩하여
boardDTO 변수에 sqlSession 값을 넣고 커밋후 리턴시켜준다.
BoardController.java 서블릿
BoardDTO 객체로 board를 생성한 후, mapper에서 만들었던 쿼리를 매개변수 boardNum으로 받아와 board에 넣어준다.
이후 board라는 이름으로 board_detail.jsp에 데이터를 뿌려줄 수 있다.
board_detail.jsp
댓글