Controller

package kr.or.ddit.controller.board;

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);
	}
}

Service

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

package kr.or.ddit.service;

import kr.or.ddit.vo.Board;

public interface IBoardService {

	public void register(Board board);

}

BoardMapper

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

package kr.or.ddit.mapper;

import kr.or.ddit.vo.Board;

public interface BoardMapper {
	public void create(Board board);
}

Mapper

마이바티스는 useGeneratedKeys 속성을 이용하여 insert할 때 데이터 베이스 측에서 채변된 기본키를 취득할 수 있다.

1) 마이바티스 설정

1-1)매핑 파일 수정(boardMapper_SQL.xml)

	- create 부분의 속성 추가
	> useGeneratedKeys="true" keyProperty="boardNo" 속성을 추가로 사용
	> <selectKey order="BEFORE" resultType="int" keyProperty="boardNo">
	>	select seq_board.nextval from dual
	> </selectKey>
	> insert into board(
	>	board_no, title, content...
	> ) values (
	>	#{boardNo}, #{title}, ...
	> )

아래 insert 쿼리가 실행 되기 전 selectKey태그 내에 있는 쿼리가 먼저 실행되어 최신의 boardNo을 생성하고 생성된 boardNo를 sql쿼리가 담겨있는 insert 태그까지 넘어올때 넘겨주고 파라미터(board)의 property인 boardNo에 셋팅한다.