Dong Log

[mysql, mybatis] insert 시, 키 값 바로 가져오기 본문

Dev./database

[mysql, mybatis] insert 시, 키 값 바로 가져오기

디이오 2021. 3. 31. 14:04

여러 용도로 데이터베이스(이하 DB)에 데이터를 insert 한 후, auto_increment 된 키 값을 바로 알고 싶은 경우가 있습니다.

다음 예제는 mybatis 라이브러리로 DB의 User테이블에  'NO' 라는  auto_increment 의 key 칼럼이 있을때 작성법 입니다.

// spring framework 기준

// Vo 작성
public class UserVo {
	
    Long no;
    String userId;
   //... getter setter  
}

@Service
public class UserService {

    @Autwired
    private UserRepo userRepo;

    UserVo user = new UserVo(); // String no; String 
    user.setUserId('test1');

    userRepo.join(user);  // 래퍼에서 join 쿼리 수행
    
    user.getNo(); // 성공 시, user.getNo(); 에서 키값 확인 가능.
}
<insert id="join" useGeneratedKeys="true" keyProperty="no">
  INSERT USER_TB SET
  USER_ID=#{userId},
  REG_DATE=NOW()
</insert>

insert 요소에서 중요한  속성은 'useGeneratedKeys' 와 'keyProperty' 입니다.


useGeneratedKeys를 true로 설정(기본 'false') 후, keyProperty엔 Vo(여기선 UserVo) 키 칼럼이름을 명시해주면 user.getNo() 메소드를 통해 키값을 확인 할 수 있습니다.

반응형
Comments