Mybatis批量插入返回自增主键(转)
2017-08-05 11:27
417 查看
我们都知道Mybatis在插入单条数据的时候有两种方式返回自增主键:
1、对于支持生成自增主键的数据库:useGenerateKeys和keyProperty。
2、不支持生成自增主键的数据库:<selectKey>。
但是怎对批量插入数据返回自增主键的解决方式网上看到的还是比较少,至少百度的结果比较少。
Mybatis官网资料提供如下:
First,ifyourdatabasesupportsauto-generatedkeyfields(e.g.MySQLandSQLServer),thenyoucansimplysetuseGeneratedKeys="true"and
settheAuthortable
abovehadusedanauto-generatedcolumntypefortheid,thestatementwouldbemodifiedasfollows:
Ifyourdatabasealsosupportsmulti-rowinsert,youcanpassalistoranarrayof
从官网资料可以看出Mybatis是支持批量插入时返回自增主键的。(百度上说不支持的,多打脸开玩笑的)
但是在本地测试的时候使用上述方式确实不能返回自增id,而且还报错(不认识keyProperty中指定的Id属性),然后在网上找相关资料。终于在Stackoverflow上面找到了一些信息。
解决办法:
1、升级Mybatis版本到3.3.1。
2、在Dao中不能使用@param注解。
3、Mapper.xml中使用list变量接受Dao中的集合。
参考地址:
https://github.com/abel533/mybatis-3/blob/master/src/main/java/org/apache/ibatis/executor/keygen/Jdbc3KeyGenerator.java
1、对于支持生成自增主键的数据库:useGenerateKeys和keyProperty。
2、不支持生成自增主键的数据库:<selectKey>。
但是怎对批量插入数据返回自增主键的解决方式网上看到的还是比较少,至少百度的结果比较少。
Mybatis官网资料提供如下:
First,ifyourdatabasesupportsauto-generatedkeyfields(e.g.MySQLandSQLServer),thenyoucansimplysetuseGeneratedKeys="true"and
settheAuthortable
abovehadusedanauto-generatedcolumntypefortheid,thestatementwouldbemodifiedasfollows:
1<insertid="insertAuthor"useGeneratedKeys="true" 2keyProperty="id"> 3insertintoAuthor(username,password,email,bio) 4values(#{username},#{password},#{email},#{bio}) 5</insert>
Ifyourdatabasealsosupportsmulti-rowinsert,youcanpassalistoranarrayof
1<insertid="insertAuthor"useGeneratedKeys="true"
2keyProperty="id">
3insertintoAuthor(username,password,email,bio)values
4<foreachitem="item"collection="list"separator=",">
5(#{item.username},#{item.password},#{item.email},#{item.bio})
6</foreach>
7</insert>
从官网资料可以看出Mybatis是支持批量插入时返回自增主键的。(百度上说不支持的,多打脸开玩笑的)
但是在本地测试的时候使用上述方式确实不能返回自增id,而且还报错(不认识keyProperty中指定的Id属性),然后在网上找相关资料。终于在Stackoverflow上面找到了一些信息。
解决办法:
1、升级Mybatis版本到3.3.1。
2、在Dao中不能使用@param注解。
3、Mapper.xml中使用list变量接受Dao中的集合。
参考地址:
相关文章推荐
- Mybatis批量插入返回插入成功后的主键id
- mybatis批量插入数据返回主键
- Mybatis批量插入返回自增主键
- Mybatis批量插入返回自增主键
- MyBatis批量插入返回主键
- mybatis批量插入返回主键解决方案
- Mybatis批量插入返回插入成功后的主键id
- Mybatis批量插入,返回插入成功后的主键id
- Mybatis批量插入返回插入成功后的主键id
- 如何使用myBatis在数据库中插入数据并返回主键
- DB2 插入数据并返回自增长主键
- Mybatis+Mysql批量插入返回自增主键
- spring JdbcTemplate下访问Oracle数据库插入数据时返回序列增长的主键
- MyBatis 插入MySQL数据库返回主键异常 java.lang.Integer cannot be cast to java.lang.Long
- JDBC 插入数据返回数据主键
- MyBatis+MySQL 返回插入的主键ID
- JdbcTemplate下访问Oracle数据库插入数据时返回序列增长的主键
- Mybatis返回插入的主键
- mybatis插入数据后返回插入记录的主键
- mybatis插入后主键返回