`
仁生之狼
  • 浏览: 42831 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Oracle批量插入

 
阅读更多

mybatis使用foreach批次插入,解决sequence只查询一次的问题

oracle的批量插入方式是: 

insert  into db(id, zgbh, shbzh) 
        select '1', '2', '3' from dual 
        union all select '2', '3', '4' from dual 
        union all select '3', '4', '5' from dual 
        union all select '4', '5', '6' from dual 
        union all select '5', '6', '7' from dual 

 

成功代码如下:

<insert id="batchInsert" parameterType="java.util.List">
	INSERT INTO T_SYS_RESOURCE (RES_ID,RES_CODE,RES_NAME,REMARK,RES_TYPE_ID,INIT_FLAG)
	SELECT SEQ_SYS_RESOURCE.NEXTVAL,A.RES_CODE,A.RES_NAME,A.REMARK,A.RES_TYPE_ID,A.INIT_FLAG FROM( 
    	<foreach collection="list" item="item" index="index" separator="UNION ALL" >
        	SELECT #{item.resCode} RES_CODE,#{item.resName} RES_NAME,#{item.remark} REMARK,
        	#{item.resType.resTypeId} RES_TYPE_ID,#{item.initFlag} INIT_FLAG FROM DUAL 
    	</foreach>
    	) A
</insert>

 foreach拼出来的数据作为一张表A,然后从表A中查询数据,再接上从sequence中读取的值作为id。这样sequence的值就会多次读取,id就会不一样。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics