方式1:在insert标签之间添加selectKey标签,示例如下:
<insert id="saveBlog" parameterType="cn.cxd.blog.entity.Blog">
<selectKey keyProperty="blogId" order="AFTER" resultType="Long">
select LAST_INSERT_ID()
</selectKey>
inset into blog(...) values(...)
</insert>
方式2:在insert标签内添加useGeneratedKeys与keyProperty属性,示例如下:
<insert id="saveBlog" parameterType="cn.cxd.blog.entity.Blog" useGeneratedKeys="true" keyProperty="blogId">
insert into blog(...) values(...)
</insert>
注:在定义mapper接口方法时,插入/保存方法不用设置返回值,因为就算设置返回值也是返回当前操作影响行数,所以有些时候会出现主键一直为1的假象,而自增id会自动保存入你的entity对象中,示例如下
//mapper层代码
public Long saveBlog(Blog blog);
//service层代码,此处即保存blog对象,当操作执行完成后,返回的主键值会自动set进blog中
blogMapper.saveBlog(blog);
//如果执行以下代码,获得的id值会一直为1,因为返回的是修改行数,并不是主键
blog.setBlogId(blogMapper.saveBlog(blog));