背景:
oracle批量插入,需要循环获取序列值作为id,并且批量插入数据。
1、循环获取序列值重复问题
标签中使用useCache="false" flushCache="true",即可不使用mybatis的缓存,每次都能获取新值
<select id="selectOaPushSelfGroupSeq" resultType="string" useCache="false" flushCache="true"> SELECT GROUP_SEQ.nextval from dual </select>
2、批量插入
useGeneratedKeys="false",foreach标签不要使用分隔符
<insert id="addBatchGroupInfo" parameterType="java.util.List" useGeneratedKeys="false">
INSERT ALL
<foreach collection="list" item="pushInfo" index="index" >
INTO SELF_GROUP
(seq_id,group_id,group_name,oa_file_name,city_code,type,create_time,op_login_no,flow_id)
VALUES
(
#{pushInfo.seqId},
#{pushInfo.groupId},
#{pushInfo.groupName},
#{pushInfo.oaFileName},
#{pushInfo.cityCode},
#{pushInfo.type},
#{pushInfo.createTime},
#{pushInfo.opLoginNo},
#{pushInfo.flowId}
)
</foreach>
SELECT 1 FROM DUAL
</insert>