MyBatis:插入数据后如何获取自增长主键值
Mapper映射文件的示例如下:
<mapper namespace="userMapper">
<!--方式1 -->
<insert id="addUser" parameterType="userScope" useGeneratedKeys="true" keyProperty="id">
insert user(user_name,pass_word,address) values (#{userName},#{passWord},#{address})
</insert>
<!-- 方式2-->
<insert id="insertSelectKey" parameterType="userScope">
<selectKey keyProperty="id" resultType="int">
select LAST_INSERT_ID()
</selectKey>
insert user(user_name,pass_word,address) values (#{userName},#{passWord},#{address})
</insert>
</mapper>
上面写了两种方式用来获取自增长主键。一种是使用useGemeratedKeys,一种是使用的方式。这两种方式获取自增长主键的ID的方式是一样的,都是从参数对象中获取自增长主键值。
注意:MyBatis3.4.0之后已经支持批量插入并获取自增主键值了。
<insert id="addUserBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
insert user(user_name,pass_word,address) values
<foreach collection="list" item="item" separator=",">
( #{item.userName},#{item.passWord},#{item.address} )
</foreach>
</insert>