Tatsächlich ist es möglich, mit dem @Options
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
Sie überlassen Ihre Methode einigen Standardparametern; es ist wichtig, das Dokument zu konsultieren (unten verlinkt -- Seite 60 in der aktuellen Version)!
(Alte Antwort) Die (recht neue) @SelectKey
kann für komplexere Schlüsselabfragen (Sequenzen, identity()-Funktion...) verwendet werden. Hier ist, was die MyBatis 3 Benutzerhandbuch (pdf) bietet als Beispiele:
Dieses Beispiel zeigt die Verwendung der @SelectKey-Anmerkung, um einen Wert aus einer Sequenz abzurufen, bevor eine einfügen:
@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);
Dieses Beispiel zeigt die Verwendung der @SelectKey-Anmerkung, um einen Identitätswert nach einer Einfügung abzurufen:
@Insert("insert into table2 (name) values(#{name})")
@SelectKey(statement="call identity()", keyProperty="nameId", before=false, resultType=int.class)
int insertTable2(Name name);