Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So geben Sie IDs für Einfügungen mit mybatis in mysql mit Anmerkungen zurück

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);