实际上,可以通过注释来执行此操作(前提是您正在使用auto_increment或数据库中的类似内容):@Options
@Insert("insert into table3 (id, name) values(null, #{name})")
@Options(useGeneratedKeys=true, keyProperty="idName")
int insertTable3(SomeBean myBean);
请注意,如果 SomeBean 中的 key 属性名为“id”,则该部件不是必需的。还有一个属性可用,用于MyBatis无法自己找到主键列的极少数情况。另请注意,通过使用 ,您将方法提交到一些默认参数;查阅文档很重要(链接如下 - 当前版本中的第60页)!keyProperty="idName"
keyColumn
@Options
(旧答案)(相当新的)注释可用于更复杂的密钥检索(序列,identity()函数...)。以下是 MyBatis 3 用户指南 (pdf) 提供的示例:@SelectKey
此示例演示如何使用@SelectKey注释从插入之前的序列中检索值:
@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);
此示例演示如何使用@SelectKey注释在插入后检索标识值:
@Insert("insert into table2 (name) values(#{name})")
@SelectKey(statement="call identity()", keyProperty="nameId", before=false, resultType=int.class)
int insertTable2(Name name);