[mybatis] insert 후 key값 반환
mybatis를 사용해 개발 하다가 insert한 데이터에 대한 key를 얻어야하는 경우가 생겼다. 고민 해봤지만 insert 후 다시 select를 해서 key를 얻어 와야겠다고 생각했다.
하지만 이 방법은 몇가지 문제가 있다고 생각이 들었다.
- key값 하나를 얻기 위해 쿼리를 2번 수행해야 하는 문제.
- unique한 값을 알지 못했을 경우 정확한 key를 얻기 힘들다.(조건절 사용)
1. 흐름
1) insert를 하기 위해 mapper에 parameter로 dto객체를 넘긴다.
2) dto객체를 받은 mapper는 insert 쿼리를 수행한다.
3) insert쿼리 완료 후 parameter로 받은 dto객체에 key값을 set(입력)한다.
4) dto객체에서 key값을 사용한다.
2. dto
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | package com.woniper.spring.dto; import java.io.Serializable; public class UserDto implements Serializable { private static final long serialVersionUID = -7948360071399248554L; private long key; private String id; //사용자 아이디 private String name; // 사용자 이름 public long getKey() { return key; } public void setKey( long key) { this .key = key; } public String getId() { return id; } public void setId(String id) { this .id = id; } public String getName() { return name; } public void setName(String name) { this .name = name; } } |
3. mapper
1 2 3 4 5 6 7 8 | <!--?xml version="1.0" encoding="UTF-8"?--> < mapper namespace = "user" > < insert id = "memberSign" parametertype = "com.woniper.spring.dto.UserDto" usegeneratedkeys = "true" keyproperty = "key" keycolumn = "key" > insert into USER(id, name) values(#{id}, #{name}) </ insert > </ mapper > |
useGeneratedKeys="true" : insert 후 key 생성 여부
keyProperty="key" : key 저장 property
keyColumn="key" : key 저장 column
출처 : https://blog.woniper.net/192?category=531455
'Java 관련 > MyBatis, iBatis' 카테고리의 다른 글
Mapper XML (엘리먼트, CDATA) (0) | 2021.03.22 |
---|---|
mybatis Framework (마이바티스 개념, ibatis와 차이, 구조, api, SqlSession) (0) | 2021.03.22 |
[iBATIS/MyBatis]쿼리실행 리턴(Return)결과 차이 (0) | 2020.09.26 |
[MyBatis] Invalid bound statement (not found): 에러 (0) | 2020.09.07 |
[ibatis] parameterMap, resultMap 지원되는 jdbcType, javaType 정리 (0) | 2019.10.07 |
[ibatis] resultMap의 property 속성 옵션 정리 (0) | 2019.10.07 |
[ibatis] parameterMap의 property 속성 옵션 정리 (0) | 2019.10.07 |
[ibatis] resultClass, resultMap 사용 기본 (0) | 2019.10.07 |