MyBatis Insert 후 key값 가져오기

Yebali·2020년 11월 26일
0

약간의_Spring

목록 보기
1/30

Mybatis는?

아주 간단히 말해 xml이나 애노테이션을 이용해 쿼리를 실행시켜주는 퍼시스턴트 프레임워크이다.

Mybatis의 애노테이션을 이용해 데이터를 Insert하고 key값을 가져오는 방법은 아래와 같다.

Table에 Insert 후 Key값 가져오기

tbl_client라는 DB테이블에 새로운 레코드를 추가하고 Key를 가져오는 예시

ReqClientSaveDto.java : 저장할 client정보를 담는 클래스

public class ReqClientsSaveDto {
    private long id;
    private String role;
    private String name;
    private String email;
}

함수 호출 플로우는 다음과 같다.
1. ClientService.java : saveClient(ReqClientsSaveDto requestDto)
2. ClientMapper.java(interface) : saveClient(ReqClientsSaveDto requestDto)
3. ClientSQL.java : SAVE_CLIENT(쿼리문)

/*ClientService.java*/
public long saveClient(ReqClientsSaveDto requestDto) {
       
	clientsMapper.saveClient(requestDto); //Save Client
    	
        // Mapper에서 saveClient()를 하고나면 자동으로 Dto객체 내에 id값이 저장된다.
        return requestDto.getId(); 
}
/*ClientMapper.java*/
/*
 * useGeneratedKeys : Insert시 key를 자동으로 생성할지 여부
 * keyProperty : 자동 생성시 어떤 column의 Key인지 나타내는 값
 */
@Insert(ClientsSql.SAVE_CLIENT)
@Options(useGeneratedKeys=true, keyProperty = "id") 
void saveClient(ReqClientsSaveDto requestDto);
/*ClientsSql.java*/
String SAVE_CLIENT =
	"/*ClientsSql.SAVE_CLIENT*/\r\n"
	+ "INSERT INTO tbl_client(role, uname, email)\r\n"
	+ "VALUES(#{role}, #{uname}, #{email})\r\n";
profile
머리에 다 안들어가서 글로 적는 중

0개의 댓글