Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

게으른 완벽주의자의 개발자 도전기

Mybatis를 활용한 기초 board만들기 4(글 수정, 글 삭제) 본문

Mybatis

Mybatis를 활용한 기초 board만들기 4(글 수정, 글 삭제)

머리방울 2022. 8. 7. 15:02

1. mapper에서 글 수정, 글삭제 sql 작성

-글 수정

<update id="updateBoard">
UPDATE BOARD 
SET TITLE = #{title}
 , WRITER = #{writer}
 , CONTENT = #{content}
WHERE BOARD_NUM = #{board_num} 
</update>



-글 삭제

<delete id="deleteBoard">
DELETE BOARD
WHERE BOARD_NUM = #{board_num}
</delete>

2. 인터페이스로 이동

-글 수정

int updateBoard(BoardDTO board);



@Override
public int updateBoard(BoardDTO board) {
int result = sqlSession.update("boardMapper.updateBoard", board);
sqlSession.commit();
return result;



-글 삭제

int deleteBoard(int board_num);



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

3. servlet controller 이동

 

-게시글 수정페이지로 이동

나는 onclick을 이용하여 수정페이지로 이동하도록 만들었다.

수정은 기존 상세페이지의 내용을 수정하기 때문에 

상세페이지 데이터를 불러오는 작업을 해야한다.

 

else if(command.equals("/update_form.do")) {
int board_num = Integer.parseInt(request.getParameter("board_num"));
BoardDTO board = boardService.selectBoardDetail(board_num);
request.setAttribute("board", board);
page = "update_form.jsp";



- 게시글 수정 (수정 후 상세페이지로 갈 것)

else if(command.equals("/update_form_write.do")) {
int board_num = Integer.parseInt(request.getParameter("board_num"));
String title = request.getParameter("title");
String writer = request.getParameter("writer");
String content = request.getParameter("content");

BoardDTO board = new BoardDTO();
board.setBoard_num(board_num);
board.setTitle(title);
board.setWriter(writer);
board.setContent(content);

boardService.updateBoard(board);


상세페이지로가기 위해서는 primary key인 board_num이 필요하다.

isRedirect가 true일 때 나는 

response.sendRedirect(page); 실행하도록 설정했다. 

이는 데이터를 가져 가지 않기 때문에 아래와 같이 데이터 보낼 수 있도록 설정함
page = "board_detail.do?board_num=" + board_num;

★"board_detail.do?board_num=" 은 문자열이다 

board_num(int) 정수이다.

문자열+숫자는 문자열이기에 
"board_detail.do?board_num="10(게시글번호)이렇게 된다는 말

isRedirect = true;



-게시글 삭제(삭제하면 다시 목록으로 돌아가도록 한다)

else if(command.equals("/delete_form.do")) {
int board_num = Integer.parseInt(request.getParameter("board_num"));
boardService.deleteBoard(board_num);
page = "board_list.do";
isRedirect=true;
}

 

4. jsp

<form action="update_form_write.do" method="post">
<input type="hidden"  name="board_num" value="${board.board_num }">

<table>
<tr>
<td>제목</td>
<td> 
<input type="text" value="${board.title }" name="title">
</td>
</tr>
<tr>
<td>작성자</td>
<td>
<input type="text" value="${board.writer }" name="writer"> 
</td>
</tr>
<tr>
<td>내용</td>
<td>
<textarea rows="7" cols="50" name="content" >${board.content }</textarea>
</td>
</tr>
</table>

<div align="center">
<input type="submit" value="수정">
</div>
</form>