๐Ÿ’ช(6-4) [Spring&mybatis] ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ - ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •

์”ฉ์”ฉํ•œ ์กฐ์•ฝ๋Œยท2023๋…„ 2์›” 7์ผ
0

๋ฏธ๋‹ˆํ”„๋กœ์ ํŠธ๐Ÿคน

๋ชฉ๋ก ๋ณด๊ธฐ
19/21

๊ฐœ๋ฐœํ™˜๊ฒฝ

์–ธ์–ด : JAVA (JDK 11)
์„œ๋ฒ„ : Apache Tomcat 9.0
ํ”„๋ ˆ์ž„์›Œํฌ : Spring Framework 3.9.18, MyBatis 3.5.8, Bootstrap 5.2.3
DB : OracleXE 11gR2
IDE : sts-3.9.18.RELEASE, SQL Developler

๊ตฌํ˜„๋‚ด์šฉ

  1. ๋ฉ”์ธํŽ˜์ด์ง€ / ๊ฒŒ์‹œํŒ ๋ชฉ๋ก ๊ตฌํ˜„
  2. CREATE : ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ
  3. READ : ๊ฒŒ์‹œ๊ธ€ ๋ณด๊ธฐ + ์กฐํšŒ์ˆ˜ ์ฆ๊ฐ€
  4. UPDATE : ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •

UPDATE : ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •

1. ๊ฒŒ์‹œ๊ธ€๋ณด๊ธฐ(read.jsp)์—์„œ '์ˆ˜์ •'์„ ๋ˆ„๋ฅด๋ฉด update.do๊ฐ€ ์‹คํ–‰๋˜์–ด ์ˆ˜์ •ํผ(update.jsp)๋กœ ์ด๋™

1. ์ˆ˜์ •๋ฒ„ํŠผ ์ถ”๊ฐ€ : read.jsp

	<a href="list.do">๋ชฉ๋ก</a>
	<a href="update.do">์ˆ˜์ •</a>

2. update.doํ˜ธ์ถœํ•˜๋ฉด update.jsp๋กœ ์ด๋™ : BoardController

	@RequestMapping(value="/update.do")
	public ModelAndView updateExecute(ModelAndView mav) {
		mav.setViewName("/board/update");
		return mav;
	}

3. update.jsp ์ƒ์„ฑ

  • ์ž‘์„ฑ์ž๋Š” ์ˆ˜์ •๋ถˆ๊ฐ€ : readonly
  • num๊ฐ’์€ ํ™”๋ฉด์—๋Š” ํ•„์š”์—†์ง€๋งŒ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ›์•„์™€์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— hidden
<body>
 <h2>๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •</h2>
 	<form name = "frm" action="update.do" method="post">
		<div>
			<span>์ž‘์„ฑ์ž</span>
			<input type="text" name="writer" value="${dto.writer}" readonly/>
		</div>
		<div>
			<span>์ œ&nbsp;&nbsp;&nbsp;๋ชฉ</span>
			<input type="text" name="title" value="${dto.title}"/>
		</div>
		<div>
			<textarea rows="10" cols="30" name="content">${dto.content}</textarea>
		</div>
		
		<input type="hidden" name="num" value="${dto.num}"/>
		<input type="submit" value="์ˆ˜์ •ํ•˜๊ธฐ" id='update'/>
	</form>
</body>

4. ์‹คํ–‰

2. num๊ฐ’ ๋„˜๊ฒจ์„œ input์š”์†Œ์— ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

1. ์ฝ”๋“œ ์ˆœ์„œ

์ฟผ๋ฆฌ๋ฌธ์ด read์™€ ๋˜‘๊ฐ™์Œ (num์„ ์กฐ๊ฑด์œผ๋กœ 1๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ)

1-1. BoardMapper.xml

	<select id="read" parameterType="int" resultType="board.dto.BoardDTO">
		SELECT * FROM boardBasic
		WHERE num=#{num}
	</select>

1-2. BoardDaoImp

	@Override
	public BoardDTO read(int num) {
		return sqlSession.selectOne("board.read", num);
	}

2. BoardServiceImp

1๊ฐœ์˜ ๊ฐ’๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ๋ฉ”์„œ๋“œ ์ƒ์„ฑ

	@Override
	public BoardDTO updateOneProcess(int num) {
		return boardDao.read(num);
	}

3. BoardController

  • updateOneProcess(int num) ๋ฆฌํ„ด๊ฐ’ ๋ฐ›์•„์„œ "dto์— ๋„ฃ์–ด์„œ update.jsp๋กœ ๋„˜๊ธฐ๊ธฐ
	@RequestMapping(value="/update.do", method=RequestMethod.GET)
	public ModelAndView updateExecute(int num, ModelAndView mav) {
		mav.addObject("dto", boardService.updateOneProcess(num));
		mav.setViewName("/board/update");
		return mav;
	}

4. read.jsp์—์„œ ๊ฒฝ๋กœ ์ˆ˜์ •

	<a href="update.do?num=${dto.num}">์ˆ˜์ •</a>

5. ์‹คํ–‰

3. '์ˆ˜์ •ํ•˜๊ธฐ'๊ฐ€ ๋ˆŒ๋ฆฌ๋ฉด DB๋ฐ์ดํ„ฐ ์ˆ˜์ •๋˜๊ณ  read.jsp๋กœ ์ด๋™

1. UPDATE์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ : boardMapper.xml

	<update id="update" parameterType="board.dto.BoardDTO">
		UPDATE boardBasic
		SET title = #{title}, content=#{content}
		WHERE num=#{num}
	</update>

2. boardDaoImp

	@Override
	public BoardDTO update(BoardDTO dto) {
		return sqlSession.selectOne("board.update", dto);
	}

3. boardServiceImp

	@Override
	public BoardDTO updateProcess(BoardDTO dto) {
		return boardDao.update(dto);
	}

4. boardController

	@RequestMapping(value="/update.do", method=RequestMethod.POST)
	public String updateExecute(BoardDTO dto) {
		boardService.updateProcess(dto);
		return "redirect:/list.do";
	}

5. ์‹คํ–‰

4. update.do ์‹คํ–‰ ํ›„, read.jsp๋กœ ์ด๋™ํ•ด์„œ ์ˆ˜์ •ํ•œ ๋‚ด์—ญ ํ™•์ธํ•˜๊ธฐ :boardController

	@RequestMapping(value="/update.do", method=RequestMethod.POST)
	public String updateExecute(BoardDTO dto) {
		int num = dto.getNum();
		boardService.updateProcess(dto);
		return "redirect:/read.do?num="+num;
	}

5. ์‹คํ–‰

-> ๋‚ด์šฉ ์ˆ˜์ • ํ›„ ๊ฒŒ์‹œ๊ธ€๋ณด๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์กฐํšŒ์ˆ˜๊ฐ€ ์ด 2๊ฐ€ ์ฆ๊ฐ€๋จ

6. ์ˆ˜์ • ํ›„ read.jsp๋กœ ๋Œ์•„์™”์„ ๋•Œ ์กฐํšŒ์ˆ˜๊ฐ€ ์ฆ๊ฐ€๋˜์ง€ ์•Š๋„๋ก ์ฒ˜๋ฆฌ : boardMapper.xml

	<update id="update" parameterType="board.dto.BoardDTO">
		UPDATE boardBasic
		SET title = #{title}, content=#{content}, readcount = readcount-1
		WHERE num=#{num}
	</update>

7. ์‹คํ–‰

profile
์”ฉ์”ฉํ•˜๊ฒŒ ๊ณต๋ถ€์ค‘ (22.11~)

0๊ฐœ์˜ ๋Œ“๊ธ€