Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да върнете идентификатори на Inserts с mybatis в mysql с пояснения

Всъщност е възможно да го направите с @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);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какъв е недостатъкът при използването на поле с размер на дълъг текст на MySQL, когато всеки запис ще се побере в поле с размер на среден текст?

  2. Регистърът на буквите е чувствителен RLIKE

  3. как да получите време за зареждане в милисекунди или микросекунди в mysql

  4. MySQL:Транзакции в множество нишки

  5. Python Pandas записват в sql с NaN стойности