Faktisk er det muligt at gøre det med @Options
annotation (forudsat at du bruger auto_increment eller noget lignende i din database) :
@Insert("insert into table3 (id, name) values(null, #{name})")
@Options(useGeneratedKeys=true, keyProperty="idName")
int insertTable3(SomeBean myBean);
Bemærk, at keyProperty="idName"
del er ikke nødvendig, hvis nøgleegenskaben i SomeBean hedder "id". Der er også en keyColumn
attribut tilgængelig, for de sjældne tilfælde, hvor MyBatis ikke selv kan finde den primære nøglekolonne. Bemærk også, at ved at bruge @Options
, du sender din metode til nogle standardparametre; det er vigtigt at konsultere dokumentet (linket nedenfor -- side 60 i den aktuelle version) !
(gammelt svar) Den (ganske nylige) @SelectKey
annotering kan bruges til mere kompleks nøglehentning (sekvenser, identitet() funktion...). Her er hvad MyBatis 3 Brugervejledning
(pdf) tilbyder som eksempler :
@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);