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만들기 2(글쓰기 페이지) 본문

Mybatis

Mybatis를 활용한 기초 board만들기 2(글쓰기 페이지)

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

 

1. 글쓰기 페이지

나는 onclick으로 글쓰기 페이지로 이동하도록 만들었다.

작성한 글을 등록하기 위해서는 폼태그를 이용하여야 input태그,

textarea의 데이터를 가져갈 수 있기에

form태그로 감싸고 버튼을 submit으로 바꾼다.

 

<form action="board_write.do" method="post">
<table>
<tr>
<td>제목</td>
<td> 
<input type="text" required name="title">
</td>
</tr>
<tr>
<td>작성자</td>
<td>
<input type="text" required name="writer">
</td>
</tr>
<tr>
<td>내용</td>
<td>
<textarea rows="5" cols="30" name="content"></textarea>
</td>
</tr>
</table>

<div align="center">
<input type="submit" value="글등록">
</div>
</form>

 

2. mapper에서 쿼리문 작성

<insert id="insertBoard">
INSERT INTO BOARD (BOARD_NUM
, TITLE
, WRITER
, CONTENT
) VALUES (
(SELECT NVL(MAX(BOARD_NUM),0)+1 FROM BOARD) 
, #{title} 
, #{writer}
, #{content}) 

</insert>

★DAO에서는 values값에 ?를 입력했지만 mapper에서는

#{변수명} 형태로 입력한다. 

#{title}은 board.getTitle(); 실행

 #{writer}는 board.getWriter(); 실행 

#{content})는 board.getContent(); 실행

그래서 이름 잘못적으면 불러오지 못한다

 

3. 인터페이스로 이동 

"1행이 삽입되었습니다."라는 알림이 뜰 것이기 때문에 리턴값 int로

values에 제목 작성자 내용을 넣어야하기에 DTO를 매개변수로 한다.

 

int insertBoard(BoardDTO board);

 

BoardServiceImpl에서는

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

4. servlet 이동

글을 작성 후 등록하면 다시 목록페이지로 가도록 할 것이다.

else if(command.equals("/board_write.do")) {
String title = request.getParameter("title");
String writer = request.getParameter("writer");
String content = request.getParameter("content");

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

boardService.insertBoard(board);

page ="boardList.do";
isRedirect=true;