当我们把主键设置成主键自增的时候,插入时就不用手动生成主键了,但是当我们要查询新增记录的主键的时候就比较麻烦了。
那么我们怎么解决这个问题呢?
答案是:我们可以SELECT LAST_INSERT_ID()来查询最后插入的id
你可能会问,当插入多条数据的收,ID值岂不是最后一条数据的ID,
然而事实并不是这样,当你一次插入了多条记录,这个函数返回的是第一个记录的ID值。
因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的Connection对象,LAST_INSERT_ID函数 将返回该Connection对AUTO_INCREMENT列最新的insert or update*作生成的第一个record的ID。这个值不能被其它客户端(Connection)影响,保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁。使用单INSERT语句插入多条记录, LAST_INSERT_ID返回一个列表。
下面我们就看看mybatis中怎么配置它
其实很简单,就是在insert标签中添加一个selectKey标签
<insert id="insert" parameterType="com.art.pojo.ArtContentCategory" >
<selectKey keyProperty="id" resultType="long" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
insert into art_content_category (id, parent_id, name,
status, sort_order, is_parent,
created, updated)
values (#{id,jdbcType=BIGINT}, #{parentId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR},
#{status,jdbcType=INTEGER}, #{sortOrder,jdbcType=INTEGER}, #{isParent,jdbcType=BIT},
#{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP})
</insert>