Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como retornar ids em inserções com mybatis no mysql com anotações


Na verdade, é possível fazer isso, com o @Options anotação (desde que você esteja usando auto_increment ou algo semelhante em seu banco de dados):
@Insert("insert into table3 (id, name) values(null, #{name})") 
@Options(useGeneratedKeys=true, keyProperty="idName")
int insertTable3(SomeBean myBean); 

Observe que o keyProperty="idName" part não é necessário se a propriedade chave em SomeBean for denominada "id". Há também uma keyColumn atributo disponível, para os raros casos em que MyBatis não consegue encontrar a coluna de chave primária sozinho. Observe também que usando @Options , você está enviando seu método para alguns parâmetros padrão; é importante consultar o documento (link abaixo - página 60 na versão atual) !

(Resposta antiga) O (bastante recente) @SelectKey A anotação pode ser usada para recuperação de chave mais complexa (sequências, função identity()...). Veja o que o Guia do usuário do MyBatis 3 (pdf) oferece como exemplos:
@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);