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);
}
}
interface로 먼저 IBoardSerivce를 생성하고 한다.
package kr.or.ddit.service;
import kr.or.ddit.vo.Board;
public interface IBoardService {
public void register(Board board);
}
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);
}
마이바티스는 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에 셋팅한다.