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>