Eigentlich ist es mit @Options
möglich Anmerkung (vorausgesetzt, Sie verwenden auto_increment oder etwas Ähnliches in Ihrer Datenbank):
@Insert("insert into table3 (id, name) values(null, #{name})")
@Options(useGeneratedKeys=true, keyProperty="idName")
int insertTable3(SomeBean myBean);
Beachten Sie, dass die keyProperty="idName"
Teil ist nicht erforderlich, wenn die Schlüsseleigenschaft in SomeBean "id" heißt. Es gibt auch eine keyColumn
-Attribut verfügbar, für die seltenen Fälle, in denen MyBatis die Primärschlüsselspalte nicht selbst finden kann. Bitte beachten Sie auch, dass durch die Verwendung von @Options
, senden Sie Ihre Methode an einige Standardparameter; Es ist wichtig, das Dokument zu konsultieren (unten verlinkt - Seite 60 in der aktuellen Version) !
(Alte Antwort) Der (ziemlich aktuelle) @SelectKey
Annotation kann für komplexere Schlüsselabrufe verwendet werden (Sequenzen, identity()-Funktion...). Hier ist, was die MyBatis 3-Benutzerhandbuch
(pdf) bietet als Beispiele :
@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);