MyBatis insert 후 auto_increment 자동증가값 가져오기 (selectKey)
MyBatis에서 insert한 자동증가값을 가져오기 위해서는 SelectKey를
SELECT LAST_INSERT_ID()
</selectKey>
테이블 생성
CREATE TABLE `test` (
`idx` int AUTO_INCREMENT NOT NULL,
`name` varchar(30) NOT NULL ,
PRIMARY KEY (`idx`)
);
CREATE TABLE `test2` (
`idx` int AUTO_INCREMENT NOT NULL ,
`test_idx` int,
PRIMARY KEY (`idx`)
);
JAVA
public class Test {
public static void main(String[] args) {
Dao dao = new Dao();
dao.test();
}
}
VO
public class TestVO {
String idx, name;
public String getIdx() {
return idx;
}
public void setIdx(String idx) {
this.idx = idx;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
String idx, write_idx;
return idx;
}
this.idx = idx;
}
return write_idx;
}
this.write_idx = write_idx;
}
}
DAO
public class Dao {
SqlSession ss = null;
public void test(){
TestVO vo = new TestVO();
vo.setName("kim");
ss = DBService.getFactory().openSession(true);
ss.insert("test",vo);
System.out.println("자동증가값 Idx : "+vo.getIdx());
Test2VO vo2 = new Test2VO();
vo2.setWrite_idx(vo.getIdx());
ss.insert("test2",vo2);
ss.close();
}
}
<insert id="test" parameterType="com.dh.mybatis.TestVO">
insert into test values(null,#{name})
<selectKey keyProperty="idx" resultType="String" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
<insert id="test2" parameterType="com.dh.mybatis.Test2VO">
insert into test2 values(null,#{write_idx})
</insert>