MyBatis批量插入(Oracle数据库)
<insert id="insert" parameterType="ComponentGroups">
???insert into component_groups
???(group_id,package_name,class_name) values (#{group_id},#{package_name},#{class_name})
???<selectKey resultType="java.math.BigDecimal" keyProperty="component_groups_id">
????select COMPONENT_GROUPS_ID.currval from dual
???</selectKey>
</insert>
?
只有这样做才能在输入的ComponentGroups中设置新插入的ID,并且保证ID的增长是+1,而不是加2.其中COMPONENT_GROUPS_ID是component_groups这张表的主键自增序列。
-------------------------------------------
从网上查阅相关资料,整理了一个Oracle批量插入的方法:
?
[java]?view plaincopy- <insert?id="insertBatch"?parameterType="ArrayList"?useGeneratedKeys="true">??
- ????????<selectKey?keyProperty="deptno"?order="BEFORE"?resultType="int">??
- ????????????SELECT?S_FORUM_USERID.NEXTVAL?FROM?DUAL??
- ????????</selectKey>??
- ??????????
- ????????INSERT?INTO?DEPT(DEPTNO?,?DNAME?,?LOC)?SELECT?S_FORUM_USERID.NEXTVAL?,?A.*?FROM?(??
- ????????<foreach?collection="list"?item="item"?index="index"?separator="UNION">??
- ????????????SELECT?#{item.dname}?,?#{item.loc}?FROM?DUAL??
- ????????</foreach>??
- ????????)?A??
- ????</insert>??