Mybatis

Mybatis를 활용한 기초 board만들기3 (게시글 상세페이지, 조회수 증가)

머리방울 2022. 8. 7. 14:35

1. mapper에서 쿼리 작성

<select id="selectBoardDetail" resultMap="board">
SELECT BOARD_NUM
, TITLE
, WRITER
, CONTENT
, CREATE_DATE
, READ_CNT FROM BOARD
 WHERE BOARD_NUM = #{board_num}

</select>

 
★ #{변수명]에서 getter값을 받기 때문에 정확한 변수명을 작성해야한다고 했다.

하지만, 이와 같이 변수가 하나일 때는 #{whwhwhwh} 이렇게 아무글자나 넣어도

getter값으로 board_num을 불러 올 수 있다. 

 

2. 인터페이스 메소드 작성

리턴값은 BoardDTO 매개변수로는 primary key인 board_num을 넣었다.

BoardDTO selectBoardDetail(int board_num);

@Override
public BoardDTO selectBoardDetail(int board_num) {
BoardDTO board = sqlSession.selectOne("boardMapper.selectBoardDetail", board_num);

(★게시글 목록과는 다르게 전체글 중 하나를 선택하는 것이니까

selectOne을 이용한다)

sqlSession.commit();
return board;
}

 

3. sevlet controller 이동

else if(command.equals("/board_detail.do")) {
int board_num = Integer.parseInt(request.getParameter("board_num"));

BoardDTO board = boardService.selectBoardDetail(board_num);
request.setAttribute("board", board);


(★나는 상세페이지로이동할 때 조회수를 1 증가시키도록 설정했다)

1) mapper

<update id="updateReadCnt">
UPDATE BOARD 
SET
READ_CNT = READ_CNT+1 
WHERE BOARD_NUM = #{board_num}
</update>



2) 인터페이스

int updateReadCnt(int board_num);



@Override
public int updateReadCnt(int board_num) {
int result = sqlSession.update("boardMapper.updateReadCnt", board_num);
sqlSession.commit();
return result;



3) controller

boardService.updateReadCnt(board_num);


page="board_detail.jsp";

 

4. jsp 만들기

<table>
<tr>
<td>글번호</td>
<td>${board.board_num }</td>
<td>작성자</td>
<td>${board.writer }</td>
<td>작성일</td>
<td>${board.create_date }</td>
<td>조회수</td>
<td>${board.read_cnt }</td>
</tr>
<tr>
<td>제목</td>
<td colspan="7">${board.title }</td>
</tr>
<tr>
<td>내용</td>
<td colspan="7">${board.content }</td>
</tr>

</table>
<div align="center">
<input type="button" value="뒤로가기" onclick="location.href='boardList.do';">
<input type="button" value="수정" onclick="location.href='update_form.do?board_num=${board.board_num}';">
<input type="button" value="삭제" onclick="location.href='delete_form.do?board_num=${board.board_num}';">

</div>