Mybatis插入数据后返回主键id

有时候使用mybatis插入数据后,需要用到记录在数据库中的自增id,可以利用keyProperty来返回,赋值给实体类中的指定字段。

单条记录插入并返回

First, if your database supports auto-generated key fields (e.g. MySQL and SQL Server), then you can simply set useGeneratedKeys="true" and set the keyProperty to the target property and you're done. For example, if the Authortable above had used an auto-generated column type for the id, the statement would be modified as follows。

 
<insert id="insertAuthor" useGeneratedKeys="true" keyProperty="id">  
  insert into Author (username,password,email,bio)  
  values (#{username},#{password},#{email},#{bio})  
</insert> 

  

添加useGeneratedKeys="true" 以及keyProperty="id"即可。id为实体类中的字段名称

多条记录插入并返回


If your database also supports multi-row insert, you can pass a list or an array of Authors and retrieve the auto-generated keys.

<insert id="insertAuthor" useGeneratedKeys="true" keyProperty="id">  
  insert into Author (username, password, email, bio) values  
  <foreach item="item" collection="list" separator=",">  
    (#{item.username}, #{item.password}, #{item.email}, #{item.bio})  
  </foreach>  
</insert>  

  

坑:要注意,多条记录时,有可能会出现id没有返回的情况。检查以下几点:

1、Mybatis版本3.3.1及其以上。

2、在Dao中不能使用@param注解。

3、Mapper.xml中使用list变量接受Dao中的集合。

posted @ 2018-06-25 11:03  欠扁的小篮子  阅读(1328)  评论(0编辑  收藏  举报