컨트롤러를 생성합니다. 다음과 같이 com.edu.springboot.MainController.java 파일에 코드를 추가합니다.
// 조회 : 파라미터로 전달되는 idx를 커맨드객체를 통해 받음
@RequestMapping("/view.do")
public String boardView(Model model, BoardDTO boardDTO) {
boardDTO = dao.view(boardDTO);
// 가져온 레코드에서 내용 부분은 줄바꿈 처리한다.
boardDTO.setContent(boardDTO.getContent().replace("\r\n", "<br/>"));
// 모델에 저장 후 JSP로 포워드
model.addAttribute("boardDTO", boardDTO);
return "view";
}
인터페이스를 생성합니다. 다음과 같이 com.edu.springboot.jdbc.IBoardService.java 파일에 코드를 추가합니다.
package com.edu.springboot.jdbc;
import java.util.ArrayList;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/* Controller와 Mybatis Mapper 사이에서 매개역할을 하는 인터페이스로 @Mapper 어노테이션을 부착한다.
* 컨트롤러는 인터페이스의 추상메서드를 호출하고, 이를 통해 Mapper의 특정 엘리먼트가 호출되어 쿼리문이 실행되는 구조를 가지게 된다. */
@Mapper
public interface IBoardService {
// 목록 : 게시물의 개수를 카운트(커맨드 객체 사용)
public int getTotalCount(ParameterDTO parameterDTO);
// 목록 : 한 페이지에 출력할 게시물을 인출하여 반환(커맨드 객체 사용)
public ArrayList<BoardDTO> listPage(ParameterDTO parameterDTO);
/* 작성 : 폼 값을 받은 후 어노테이션으로 통해 이름을 변경하여 Mapper로 전달
* Mapper에서는 변경된 이름을 통해 인파라미터를 설정한다. */
public int write(@Param("_name") String name, @Param("_title") String title, @Param("_content") String content);
// 열람(커맨드 객체 사용)
public BoardDTO view(BoardDTO boardDTO);
// 수정(커맨드 객체 사용)
public int edit(BoardDTO boardDTO);
// 삭제
public int delete(String idx);
}
매퍼를 생성합니다. 다음과 같이 resources/mapper/BoardDAO.xml 파일에 코드를 추가합니다.
<!-- 조회 : 게시물의 일련번호를 DTO를 통해 받은 후 select하고, 결과를 다시 DTO에 저장 후 반환한다. -->
<select id="view"
resultType="com.edu.springboot.jdbc.BoardDTO"
parameterType="com.edu.springboot.jdbc.ParameterDTO">
SELECT * FROM myboard WHERE idx=#{idx}
</select>
뷰를 생성합니다. 다음과 같이 webapp/WEB-INF/views/view.jsp 파일에 코드를 추가합니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>게시판 읽기(Mybatis)</h2>
<form name="writeFrm">
<input type="hidden" name="idx" value="${ boardDTO.idx }" />
</form>
<table border="1" width="90%">
<colgroup>
<col width="15%"/> <col width="35%"/>
<col width="15%"/> <col width="*"/>
</colgroup>
<!-- 게시글 정보 -->
<tr>
<td>번호</td> <td>${ boardDTO.idx }</td>
<td>작성자</td> <td>${ boardDTO.name }</td>
</tr>
<tr>
<td>작성일</td> <td>${ boardDTO.postdate }</td>
<td>조회수</td> <td>${ boardDTO.visitcount }</td>
</tr>
<tr>
<td>제목</td>
<td colspan="3">${ boardDTO.title }</td>
</tr>
<tr>
<td>내용</td>
<td colspan="3" height="100">
${ boardDTO.content }
</td>
</tr>
<!-- 하단 메뉴(버튼) -->
<tr>
<td colspan="4" align="center">
<button type="button" onclick="location.href='./edit.do?idx=${ param.idx }';">
수정하기
</button>
<button type="button" onclick="deletePost(${ param.idx });">
삭제하기
</button>
<button type="button" onclick="location.href='./list.do';">
목록 바로가기
</button>
</td>
</tr>
</table>
</body>
이제 게시물을 조회할 수 있습니다.
다음과 같이 실행됩니다.

조회할 게시물의 제목을 클릭하면 게시판 상세보기 페이지로 이동합니다.

게시판 조회 기능이 성공적으로 구현되었습니다.