Mybatis批量插入返回自增主键
2017-05-19 09:13
260 查看
我们都知道Mybatis在插入单条数据的时候有两种方式返回自增主键:
1、对于支持生成自增主键的数据库:useGenerateKeys和keyProperty。
2、不支持生成自增主键的数据库:<selectKey>。
但是怎对批量插入数据返回自增主键的解决方式网上看到的还是比较少,至少百度的结果比较少。
Mybatis官网资料提供如下:
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:
If your database also supports multi-row insert, you
can pass a list or an array of Authors and retrieve
the auto-generated keys.
但是在本地测试的时候使用上述方式确实不能返回自增id,而且还报错(不认识keyProperty中指定的Id属性),然后在网上找相关资料。终于在Stackoverflow上面找到了一些信息。
解决办法:1、升级Mybatis版本到3.3.1。2、在Dao中不能使用@param注解。3、Mapper.xml中使用list变量接受Dao中的集合。
1、对于支持生成自增主键的数据库:useGenerateKeys和keyProperty。
2、不支持生成自增主键的数据库:<selectKey>。
但是怎对批量插入数据返回自增主键的解决方式网上看到的还是比较少,至少百度的结果比较少。
Mybatis官网资料提供如下:
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>
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>从官网资料可以看出Mybatis是支持批量插入时返回自增主键的。(百度上说不支持的,多打脸 开玩笑的)
但是在本地测试的时候使用上述方式确实不能返回自增id,而且还报错(不认识keyProperty中指定的Id属性),然后在网上找相关资料。终于在Stackoverflow上面找到了一些信息。
解决办法:1、升级Mybatis版本到3.3.1。2、在Dao中不能使用@param注解。3、Mapper.xml中使用list变量接受Dao中的集合。
相关文章推荐
- mybatis批量插入返回主键解决方案
- Mybatis批量插入返回插入成功后的主键id
- Mybatis批量插入返回自增主键(转)
- MyBatis批量插入返回主键
- Mybatis批量插入返回自增主键
- Mybatis批量插入,返回插入成功后的主键id
- Mybatis批量插入返回插入成功后的主键id
- Mybatis批量插入返回插入成功后的主键id
- mybatis批量插入数据返回主键
- Java MyBatis 插入数据库返回主键
- MyBatis魔法堂:Insert操作详解(返回主键、批量插入)
- Mysql+Mybatis 批量插入返回主键
- Mybatis中,当插入数据后,返回最新主键id的几种方法,及具体用法
- MyBatis在Oracle中插入数据并返回主键的问题解决
- spring jdbcTemplate 插入对象返回主键值 (未测试)
- Java MyBatis 插入数据库返回主键
- 【Groovy】返回插入数据库的行的主键
- MyBatis插入语句返回主键值
- MyBatis魔法堂:Insert操作详解(返回主键、批量插入)
- MyBatisc常用批量操作以及插入数据返回主键