Всъщност е възможно да го направите с @Options
анотация (при условие, че използвате auto_increment или нещо подобно във вашата база данни) :
@Insert("insert into table3 (id, name) values(null, #{name})")
@Options(useGeneratedKeys=true, keyProperty="idName")
int insertTable3(SomeBean myBean);
Имайте предвид, че keyProperty="idName"
част не е необходима, ако ключовото свойство в SomeBean е с име "id". Има и keyColumn
наличен атрибут, за редките случаи, когато MyBatis не може сам да намери колоната с първичен ключ. Моля, имайте предвид също, че като използвате @Options
, изпращате своя метод на някои параметри по подразбиране; важно е да се консултирате с документа (с връзка по-долу - страница 60 в текущата версия) !
(Стар отговор) (съвсем скорошен) @SelectKey
анотацията може да се използва за по-сложно извличане на ключ (последователности, функция identity()...). Ето какво съдържа Ръководство за потребителя на MyBatis 3
(pdf) предлага като примери :
@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);