有时候在使用mybatis进行插入数据时,希望可以在插入数据后返回该新插入数据的主键,可以通过如下两种方式实现:
1、在insert标签里添加如下标签:
<selectKey resultType="java.lang.Short" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID() AS id
</selectKey>
其中:keyProperty的值必须在实体里提供setter方法,这样返回的主键会自动赋值。
2、通过为insert添加属性:
<!-- useGeneratedKeys="true" keyProperty="xxx" for sqlserver and mysql -->
<!-- xxx 为java对象属性,必须有setter方法, 指定useGeneratedKeys和keyProperty后,自动增长的字段值会自动赋值给此对象 -->
<insert id="insert" useGeneratedKeys="true" keyProperty="androidApkfileId">
<![CDATA[
INSERT INTO `tbl_android_apkfile` (
`android_id` ,
`apkfile_id` ,
`package_name` ,
`download_url`,
`file_name`
) VALUES (
#{androidId, jdbcType=INTEGER} ,
#{apkfileId, jdbcType=INTEGER} ,
#{packageName, jdbcType=VARCHAR} ,
#{downloadUrl, jdbcType=VARCHAR},
#{fileName, jdbcType=VARCHAR}
)
]]>
</insert>
当然,对于这种返回的主键必须是可以设置为自动增加的主键,比如mysql和sql server