Sebenarnya, itu mungkin dilakukan, dengan @Options
anotasi (asalkan Anda menggunakan auto_increment atau yang serupa di database Anda) :
@Insert("insert into table3 (id, name) values(null, #{name})")
@Options(useGeneratedKeys=true, keyProperty="idName")
int insertTable3(SomeBean myBean);
Perhatikan bahwa keyProperty="idName"
part tidak diperlukan jika properti kunci di SomeBean bernama "id". Ada juga keyColumn
atribut tersedia, untuk kasus yang jarang terjadi ketika MyBatis tidak dapat menemukan kolom kunci utama sendiri. Harap perhatikan juga bahwa dengan menggunakan @Options
, Anda mengirimkan metode Anda ke beberapa parameter default; penting untuk berkonsultasi dengan dokumen (tertaut di bawah -- halaman 60 dalam versi saat ini) !
(Jawaban lama) (cukup baru) @SelectKey
anotasi dapat digunakan untuk pengambilan kunci yang lebih kompleks (urutan, fungsi identitas()...). Inilah Panduan Pengguna MyBatis 3
(pdf) menawarkan sebagai contoh :
@Insert("insert into table3 (id, name) values(#{nameId}, #{name})")
@SelectKey(statement="call next value for TestSequence", keyProperty="nameId", before=true, resultType=int.class)
int insertTable3(Name name);
@Insert("insert into table2 (name) values(#{name})")
@SelectKey(statement="call identity()", keyProperty="nameId", before=false, resultType=int.class)
int insertTable2(Name name);