230404 SPRING_useGeneratedKey

Myung A Lee·2023년 4월 4일
0

Spring

목록 보기
4/6
post-thumbnail

SPRING

sql문을 활용하다보면 방금 입력한 데이터의 키가 필요한 경우가 있다. 예를 들어 작성한 글의 내용을 담은 상세페이지를 작성과 동시에 띄우고 싶을 때 useGeneratedKey를 사용할 수 있다.

useGeneratedKey

  • INSERT 한 DATA의 KEY를 반환 받는 방법
    조건 1. 파라메터를 DTO로 보내야 한다.
    조건 2. mapper.xml에 존재하는 sql문에 generatedKey 옵션을 사용해야한다.
    조건 3. 받아온 키는 DTO에서 꺼내 온다.

Controller

@RequestMapping(value = "/update.do", method = RequestMethod.POST)
	public String update(@RequestParam HashMap<String,String> params,  HttpSession session) {
		
		logger.info("params: "+ params);
		
		int row = service.update(params);
		
		if (row == 1) {
			session.setAttribute("msg", "글 수정을 완료하였습니다.");
		}
		
		return "redirect:list.do";
	}

Service

  • 조건 1. 파라메터를 DTO로 보내야 한다.
  • 조건 3. 받아온 키는 DTO에서 꺼내 온다.
public int write(HashMap<String, String> params) {
		
		logger.info("글쓰기 데이터 : " + params);
		
		BoardDTO dto = new BoardDTO();
		dto.setUser_name(params.get("user_name"));
		dto.setContent(params.get("content"));
		dto.setSubject(params.get("subject"));
		
		dao.write(dto);
		
		int idx = dto.getIdx();
		
		return idx;
	}

mapper.xml

  • 조건 2. mapper.xml에 존재하는 sql문에 generatedKey 옵션을 사용해야한다.
<insert 
		useGeneratedKeys="true"
		keyColumn="idx"
		keyProperty="idx"
		id="write" parameterType="HashMap" >
		INSERT INTO bbs(user_name,subject,content) 
		VALUES(#{user_name},#{subject},#{content})	
	</insert>

0개의 댓글