sql >> Database teknologi >  >> RDS >> Mysql

Sådan returneres id'er på Inserts med mybatis i mysql med annoteringer

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


  1. Metadata vedrørende PL/SQL-posttyper på pakkeniveau

  2. SELECT INTO og ikke-erklæret variabel fejl

  3. MySQL indsæt hvor ikke eksisterer / hvis ikke eksisterer

  4. Find og fjern dublerede rækker med to kolonner