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

Come restituire ID su inserti con mybatis in mysql con annotazioni

In realtà, è possibile farlo, con il @Options annotation (a condizione che tu stia utilizzando auto_increment o qualcosa di simile nel tuo database) :

@Insert("insert into table3 (id, name) values(null, #{name})") 
@Options(useGeneratedKeys=true, keyProperty="idName")
int insertTable3(SomeBean myBean); 

Nota che il keyProperty="idName" parte non è necessaria se la proprietà della chiave in SomeBean è denominata "id". C'è anche una keyColumn attributo disponibile, per i rari casi in cui MyBatis non riesce a trovare da solo la colonna della chiave primaria. Tieni inoltre presente che utilizzando @Options , stai inviando il tuo metodo ad alcuni parametri predefiniti; è importante consultare il doc (linkato sotto -- pagina 60 nella versione attuale) !

(Risposta precedente) Il (piuttosto recente) @SelectKey l'annotazione può essere utilizzata per il recupero di chiavi più complesse (sequenze, funzione identity()...). Ecco cosa è il Guida per l'utente di MyBatis 3 (pdf) offerte come esempi :

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