Ve skutečnosti je to možné udělat pomocí @Options
anotace (za předpokladu, že ve své databázi používáte auto_increment nebo něco podobného):
@Insert("insert into table3 (id, name) values(null, #{name})")
@Options(useGeneratedKeys=true, keyProperty="idName")
int insertTable3(SomeBean myBean);
Všimněte si, že keyProperty="idName"
část není nutná, pokud se vlastnost klíče v SomeBean jmenuje "id". Je zde také keyColumn
atribut dostupný pro vzácné případy, kdy MyBatis nemůže sám najít sloupec primárního klíče. Upozorňujeme také, že pomocí @Options
, předkládáte svou metodu některým výchozím parametrům; je důležité konzultovat dokument (odkaz níže -- strana 60 v aktuální verzi)!
(stará odpověď) (zcela nedávné) @SelectKey
anotace může být použita pro složitější vyhledávání klíčů (sekvence, funkce identity()...). Zde je obsah Uživatelská příručka pro MyBatis 3
(pdf) nabízí jako příklady:
@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);