아주 간단히 말해 xml이나 애노테이션을 이용해 쿼리를 실행시켜주는 퍼시스턴트 프레임워크이다.
Mybatis의 애노테이션을 이용해 데이터를 Insert하고 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";