MyBatis新增记录时返回id的配置

当我们把主键设置成主键自增的时候,插入时就不用手动生成主键了,但是当我们要查询新增记录的主键的时候就比较麻烦了。

那么我们怎么解决这个问题呢?

答案是:我们可以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标签


  
  		SELECT LAST_INSERT_ID()
  	
    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})
  

 

你可能感兴趣的:(MyBatis)