oracle批量插入并且返回自增主键_mybatis批量插入并返回主键(序列)-oracle
时间: 2023-07-21 15:12:35 浏览: 220
spring中使用mybatis实现批量插入的示例代码
对于 Oracle 数据库,在进行批量插入时可以使用 INSERT ALL 语法,同时使用 RETURNING 子句返回自增主键或序列值。在 MyBatis 中,可以通过配置 useGeneratedKeys 和 keyProperty 属性来返回主键值。
以下是一个示例,假设表名为 TEST,主键名为 ID,序列名称为 SEQ_TEST_ID:
```xml
<insert id="batchInsert" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" separator=";">
INSERT ALL INTO TEST (NAME, AGE) VALUES (#{item.name}, #{item.age})
INTO TEST (ID) VALUES (SEQ_TEST_ID.NEXTVAL) SELECT * FROM DUAL
</foreach>
<selectKey resultType="java.lang.Long" order="AFTER" keyProperty="id">
SELECT SEQ_TEST_ID.CURRVAL FROM DUAL
</selectKey>
</insert>
```
在这个示例中,使用 foreach 标签将要插入的数据列表进行循环,对于每个数据项,先插入 NAME 和 AGE 字段的值,然后插入 SEQ_TEST_ID.NEXTVAL 作为 ID 字段的值。在循环结束后,使用 selectKey 标签获取 SEQ_TEST_ID.CURRVAL 作为自增主键或序列值,将其赋值给 id 属性。
需要注意的是,使用 RETURNING 子句也可以返回主键值,但是在批量插入时,每个数据项都需要执行一次 INSERT 操作,性能会受到影响。因此,在大批量数据插入时,使用 SEQ 序列的方式可以提高性能。
阅读全文