Właściwie można to zrobić za pomocą @Options
adnotacja (pod warunkiem, że używasz auto_increment lub czegoś podobnego w swojej bazie danych):
@Insert("insert into table3 (id, name) values(null, #{name})")
@Options(useGeneratedKeys=true, keyProperty="idName")
int insertTable3(SomeBean myBean);
Zwróć uwagę, że keyProperty="idName"
część nie jest konieczna, jeśli właściwość key w SomeBean nosi nazwę „id”. Jest też keyColumn
dostępny atrybut, w rzadkich przypadkach, gdy MyBatis nie może samodzielnie znaleźć kolumny klucza podstawowego. Pamiętaj również, że używając @Options
, przesyłasz swoją metodę do pewnych domyślnych parametrów; ważne jest, aby zapoznać się z dokumentacją (link poniżej - strona 60 w aktualnej wersji)!
(Stara odpowiedź) (dość niedawno) @SelectKey
Adnotacja może być użyta do bardziej złożonego wyszukiwania kluczy (sekwencje, funkcja identity()...). Oto, co Podręcznik użytkownika MyBatis 3
(pdf) oferuje jako przykłady :
@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);