Controller

package kr.or.ddit.controller.board;

import java.util.List;

import javax.inject.Inject;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import kr.or.ddit.service.IBoardService;
import kr.or.ddit.vo.Board;
import lombok.extern.slf4j.Slf4j;

@Controller
@RequestMapping("/crud/board")
@Slf4j
public class CrudBoardController {
	
	@Inject
	private IBoardService service;
	
	@RequestMapping(value="/register", method = RequestMethod.GET)
	public String crudRegisterForm(Model model) {
		log.info("crudRegisterForm() 실행...!");
		model.addAttribute("board", new Board());
		return "crud/register";
	}
	
	@PostMapping(value="/register")
	public String crudRegister(Board board, Model model) {
		log.info("crudRegister() 실행...!");
		service.register(board);
		model.addAttribute("msg", "등록이 완료되었습니다.");
		return "crud/success";
	}
	
	@RequestMapping(value="/list", method = RequestMethod.GET)
	public String crudList(Model model) {
		log.info("crudList() 실행...!");
		List<Board> boardList = service.list();
		model.addAttribute("boardList", boardList);
		return "crud/list";
	}
	
	@RequestMapping(value="/read", method = RequestMethod.GET)
	public String crudRead(int boardNo, Model model) {
		log.info("crudRead() 실행...!");
		Board board = service.read(boardNo);
		model.addAttribute("board", board);
		return "crud/read";
	}
	
	**// 수정하기 메소드**
	@RequestMapping(value="/modify", method = RequestMethod.GET)
	public String crudModifyForm(int boardNo, Model model) {
		log.info("crudModifyForm() 실행...!");
		Board board = service.read(boardNo);
		model.addAttribute("board", board);
		model.addAttribute("status", "u"); // '수정을 진행중입니다'라는 flag값
		return "crud/register";
	}
}

Service

interface로 먼저 IBoardSerivce를 생성하고 한다.

package kr.or.ddit.service.impl;

import java.util.List;

import javax.inject.Inject;

import org.springframework.stereotype.Service;

import kr.or.ddit.mapper.BoardMapper;
import kr.or.ddit.service.IBoardService;
import kr.or.ddit.vo.Board;

@Service
public class BoardServiceImpl implements IBoardService {

	@Inject
	private BoardMapper mapper;
	
	@Override
	public void register(Board board) {
		mapper.create(board);
	}

	@Override
	public List<Board> list() {
		return mapper.list();
	}

	@Override
	public Board read(int boardNo) {
		return mapper.read(boardNo);
	}

**// 수정하기 서비스**
	@Override
	public int update(Board board) {
		return mapper.update(board);
	}

}

BoardMapper

interface로 root-context에 설정한 대로kr.or.ddit.mapper에 만들어 준다

package kr.or.ddit.mapper;

import java.util.List;

import kr.or.ddit.vo.Board;

public interface BoardMapper {
	public void create(Board board);
	public List<Board> list();
	public Board read(int boardNo);
	public int update(Board board);
}

Mapper

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "<https://mybatis.org/dtd/mybatis-3-mapper.dtd>">
 <mapper namespace="kr.or.ddit.mapper.BoardMapper">
 
 	<!-- BoardMapper에 있는 함수명이 곧 id가 된다. -->
 	<insert id="create" parameterType="board" useGeneratedKeys="true">
 		<selectKey keyProperty="boardNo" resultType="int" order="BEFORE">
 			select seq_board.nextval from dual
 		</selectKey>
 		insert into board(
 			board_no, title, content, writer, reg_date
 		)values(
 			#{boardNo}, #{title}, #{content}, #{writer}, sysdate
 		)
 	</insert>
 	
 	<select id="list" resultType="board">
 		select
 			board_no, title, content, writer, reg_date
 		from board
 		where 1=1
 		order by board_no desc
 	</select>
 	
 	<select id="read" parameterType="int" resultType="board">
 		select
 			board_no, title, content, writer, reg_date
 		from board
 		where board_no = #{boardNo}
 	</select>

 	**<!-- 수정하기 쿼리 -->**
 	<update id="update" parameterType="board">
 		update board
 		set
 			title = #{title},
 			content = #{content}
 		where board_no = #{boardNo}
 	</update>
 </mapper>

JSP 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="<http://www.springframework.org/tags/form>" prefix="form" %>
<%@ taglib uri="<http://java.sun.com/jsp/jstl/core>" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="<https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js>"></script>
</head>
<body>
	<h2>Register</h2>
	<form:form modelAttribute="board" method="post" action="/crud/board/register">
		<c:if test="${status eq 'u' }">
			<input type="hidden" name="boardNo" value="${board.boardNo }"/>
		</c:if>
		<table>
			<tr>
				<td>제목</td>
				<td>
					<input type="text" id="title" name="title" value="${board.title }"/>
				</td>
			</tr>
			<tr>
				<td>작성자</td>
				<td>
					<input type="text" id="writer" name="writer" value="${board.writer }"/>
				</td>
			</tr>
			<tr>
				<td>내용</td>
				<td>
					<textarea rows="10" cols="30" id="content" name="content">${board.content }</textarea>
				</td>
			</tr>
		</table>
		<div>
			<c:set value="등록" var="btnText"/>
			<c:if test="${status eq 'u' }">
				<c:set value="수정" var="btnText"/>
			</c:if>
			<input type="button" id="btnRegister" value="${btnText }">
			<input type="button" id="btnList" value="목록">
		</div>
	</form:form>
</body>
<script type="text/javascript">
$(function(){
	var board = $("#board");
	var btnRegister = $("#btnRegister");
	var btnList = $("#btnList");
	
	btnRegister.on("click", function(){
		var title = $("#title").val(); 		// 제목을 가져온다
		var content = $("#content").val();  // 내용을 가져온다.
		var writer = $("#writer").val(); 	// 작성자를 가져온다.
		
		if(title == null || title == ""){
			alert("제목을 입력해주세요.");
			return false;
		}
		
		if(content == null || content == ""){
			alert("내용을 입력해주세요.");
			return false;
		}
		
		if(writer == null || writer == ""){
			alert("작성자을 입력해주세요.");
			return false;
		}
		
		if($(this).val() == "수정"){
			board.attr("action", "/crud/board/modify");
		}
		
		board.submit();	//submit이벤트를 날려 서버로 데이터로 전송한다.
	});
	
	// 목록 버튼 클릭 시 이벤트
	btnList.on("click", function(){
		location.href = "/crud/board/list";
	});
});
</script>
</html>