mybatis加oracle批量insert中的序列问题,可不可以用union做批量的sql语句--急
<insert id="saveManyPopInfo" parameterType="java.util.List">
    insert into popinfo (popid,popname,remark)
    select seq_popid.nextval,p.* from (
    <foreach collection="list" item="pop" separator="union all">
        select #{pop.popname},#{pop.remark} from dual
    </foreach>
    ) p
</insert>
该代码可以实现批量新增的问题,但是我希望用的是union all的方法,即:
<insert id="saveManyPopInfo" parameterType="java.util.List">
           <!--这里的selectKey 感觉只是执行了一次,因为会报一个叫插入重复的错误-->
    <selectKey keyProperty="p1" order="BEFORE" resultType="int">
        select seq_popid.nextval from dual
    </selectKey>
    insert into popinfo (popid,popname,remark)
    <foreach collection="list" item="pop" separator="union all">
        select #{p1},#{pop.popname},#{pop.remark} from dual
    </foreach>
</insert>
    怎么可以用union all来解决批量新增的问题?
0

5个回答


<!--这里的selectKey 感觉只是执行了一次,因为会报一个叫插入重复的错误-->

select seq_popid.nextval from dual

insert into popinfo (popid,popname,remark)

select #{p1},#{pop.popname},#{pop.remark} from dual


怎么可以用union all来解决批量新增的问题?

0

union all? 它不是用来合并数据的吗?基本用来查询。。。没听说过可以用来插入啊

0
Mr_SongAS
Mr_SongAS 可以用来插入,一条语句插入多个值
4 年多之前 回复

批量插入么? 我写过一篇博客,关于ibatis批量插入,你看看吧http://blog.csdn.net/moneyshi/article/details/22807239

0
Mr_SongAS
Mr_SongAS 没有涉及到Oracle的序列问题,以及selectKey只能循环一次的问题
4 年多之前 回复

第一个插入不就是union all吗

0

separator="union all"已经是union all了啊

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
union all和union批量添加数据
union all: (1)insert Test5    select '泮泮',100 union all   select '帆帆',400 union all   select '太阳',3000 union all   select '月亮' ,700  结果:会向Test5插入四条数据 (2) insert Test5    select '地球',600 union all  ...
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 u...
老司机学习MyBatis之动态SQL使用foreach在Oracle中批量插入
一、前言前面一节,我们讲解了在MySQL下如何通过foreach批量插入数据,这一节,我们将介绍在Oracle下批量插入数据,也有两种方式。二、案例完整的工程目录结构如下在Oracle下创建数据库表t_emp,并创建序列CREATE TABLE t_emp ( id number(10) NOT NULL, emp_name varchar(50) DEFAULT NULL, emp_...
mybatis,oracle批量插入带序列
&amp;lt;insert id=&quot;insertBatch&quot; parameterType=&quot;java.util.List&quot;&amp;gt; INSERT INTO T_ZZ_RS_EDU( RS_EID, NAME_, IDCARD, CI_RS_ID, START_DATE, END_DATE, WORK_UNIT, WORK_DUTY,...
使用mybatis进行批量插入操作带序列
进行批量插入 使用union all,批插带序列插入 -- 批插带序列使用了union all --> id="insertDetailed" parameterType="java.util.List" useGeneratedKeys="false"> insert into Detailed( id, DETAILNU
oracle和mysql在mybatis下批量插入数据和用自增长序列插入
oracle和mysql在mybatis下批量插入数据和用自增长序列插入数据的区别   1、自增长序列插入 oracle: &amp;lt;insert id=&quot;add&quot; parameterType=&quot;Favorite&quot; &amp;gt;           &amp;lt;selectKey keyProperty=&quot;fid&quot; resultType=&quot;int&quot; order=&quot;BEFORE&quot;&amp
mybatis实现oracle批量插入,带序列(记录一下)
INSERT INTO CHECK_DETAIL( CHECK_id,CHECK_DATE,CHECK_WEEK,EMP_CODE,CHECK_TIME,CHECK_LATE,CHECK_LEAVE_EARLY, CHECK_EXCEPTION,CHECK_WORK_OVERTIME,EMP_NAME,DEPT_NAME,CHECK_LATE_TIME,DESCRIPTION
两种Oracle数据库批量插入方法:在mybatis实现,带序列。
第一种   insert into AAUSERFROMCOMMON ( ID, SYS_CREATE_TIME, SYS_CREATE_ID,       SYS_LAST_MODIFY_TIME, SYS_LAST_MODIFY_USER_ID,       SYS_RECORD_STATUS, SYS_VERSION, SYS_ID,       SYS_COMPANY_
Mybatis批量插入注解方式示例(oracle + mysql)
场景: 导入20万条数据,for循环方式一条条插入巨慢(太low)。拼接长SQL的话,oracle根本无法支持(有SQL长度限制),经测试数据多于2000基本就不行了。故改用批量插入,在mapper中注解使用mybatis的foreach标签写。Mybatis框架会自动拼接生成批插的sql。 mysql版(这里只写2个字段,大家自己照葫芦画瓢) @Insert( ...
mybatis踩坑:批量插入oracle与mysql的区别
环境:mybatis+oracle 功能需求:做项目时遇到一个需求,需要把几条数据批量插入到数据库。 内容:开始做的时候,一下子就想到了 &amp;lt;insert id=&quot;save&quot;  useGeneratedKeys=&quot;false&quot; parameterType=&quot;java.util.List&quot;&amp;gt; insert into table (ID,IMAGE_URL,STATE,UPDATE_T...
mybatis实现oracle批量操作和使用序列号
1.批量插入&amp;lt;insert id=&quot;insertNumber&quot; parameterType=&quot;java.util.List&quot; useGeneratedKeys=&quot;false&quot;&amp;gt; insert into ZX_APP_PD_PANDIAN(GOODSID,LOTNO,REALQTY,CUTID) &amp;lt;foreach collection=&quot;list&quot; item=&quot;item
oracle批量插入(insert)ID自增问题
--1.创建序列 create sequence seq_stu       increment by 1    -- 每次递增1       start with 1       -- 从1开始       nomaxvalue      -- 没有最大值       minvalue 1       -- 最小值=1       NOCYCLE;      -- 不循环    
Union All拼接Sql语句做批量添加
    上篇文章《多种方法实现Excel批量导入数据库》说到,批量导入用了拼接Insert语句的方式进行,这种方式简单来说是把要导入的每条数据都拼接成一条Insert语句, 然后同时执行实现的。但是经过领导提醒,又用了另外一种方式,那就是用Union All做合并,合并完一张表之后,整张表导入。下面就简单介绍一下。       Union All是做联表查询的,平常的用法是: &amp;lt;sp...
Mybatis的oracle的经典SQL语句(分页-新增的id自增-批量新增-动态修改-union all)
Mybatis的oracle的经典SQL语句(分页-新增的id自增-批量新增-动态修改-union all) 分页:   select * from (select t.*,rownum rn from (select id, tru
MyBatis中批量插入
MyBatis中批量插入   方法一:     resultType="java.lang.String">   SELECT CURRENT_TIMESTAMP()     insert into kangaiduoyaodian ( depart1, depart2, product_name,   generic_name, img, product_specifica
Mybatis批量插入数据到Oracel
最近项目中出现了一个功能存在性能问题,经过研究发现主要是出现在数据插入的时候,当时用的单条提交,发现性能极其差,因为项目中用的mybatis,所以考虑用批量提交的方式。 &amp;lt;!-- 批量提交 --&amp;gt; &amp;lt;insert id=&quot;batchInsertWithoutSeq&quot; parameterType=&quot;java.util.List&quot;&amp;gt; insert in...
Java使用Mybatis将数据批量插入到Oracle
Java实现使用Mybatis将数据批量插入到Oracle数据库,并且可以使用Oracle序列来生成主键
mybatis针对oracle和mysql高效率批量插入的解决方案
mybatis针对oracle和mysql高效率批量插入的解决方案:      oracle:   Xml代码 下载   insert id="batchSave" parameterType="java.util.List">            Insert into table_name(id,name)           foreach collectio
Oracle+Mybatis的foreach insert批量插入这些坑的解决方案
最近做一个批量上传附件的需求,将多个附件的信息批量插入数据库中。解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数据库中,因为项目使用了MyBatis,所以打算使用MyBatis的foreach功能进行批量插入。期间遇到了“SQL 命令未正确结束 ”的错误,最终解决,记录下来供以后查阅和学习。        首先,有关Mybatis的foreach insert的,具体如下:...
Mybatis实现oracle批量插入,主键问题
由于Oracle中没有主键自增,所以在应用MyBatis实现Oracle批量插入操作的时候,我们可以使用序列的形式 创建对应的序列: create sequence gra_seq MyBatis批量插入SQL语句: insert into groleauthen(ra_id,role_id,authen_id) select gra_seq.nextval,gra.
mybatis 与sqlserver相关的批量插入的问题
项目上遇到一个关于sqlserver批量插入的问题,持久层框架是mybatis; 开始采用的批量插入方法如下图: INSERT INTO numas_qos_cri_rating_level(cri_id,rating_level_id,operator1,number1,operator2,number2) collection="levelList" item="param" separa
mybatis-oracle批量新增,主键使用序列
&amp;lt;!-- 批量新增 --&amp;gt; &amp;lt;insert id=&quot;insertBatch&quot; parameterType=&quot;java.util.List&quot;&amp;gt; &amp;lt;selectKey keyProperty=&quot;id&quot; order=&quot;BEFORE&quot; resultType=&quot;java.lang.Long&quot;&amp;gt;
Mybatis批量增加,删除,更新Oracle
最近需要用到Mybatis批量新增oracle数据库,刚开始在网上找到的方法是都是更新mySQL的,试了一下发现不适合Oracle,后来发现正确的oracle批量新增的sql是: insert into ATTRACTIONS ( ID, NAME, LONGITUDE, LATITUDE,  UPDATE_TIME )                   (select   #
Mybatis——insert数据时,手动添加序列作为主键
利用mybatis逆向工程生成的xml文件中,由于oracle中主键是number类型,所以只有通过序列来作为主键。   更改map.xml文件: insert into BS_PTN_CONFIG (ID, NETWORKTYPE, CIR, PIR, DISMANTLE, CANCELLATION, OPERATION_TIME, OPERATOR) ...
sql批量插入数据INSERT INTO SELECT语句
INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1 或者:Insert into Table2 select  *  from Table1 注意:(1)要求目标表Table2必须存在,并且字段field,field2...也必须存在 (2...
MyBatis+Oracle用foreach标签实现批量插入数据以及主键自增
1.前言          最近做一个批量导入影像的需求,将多条记录批量插入数据库中。解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数据库中,因为项目使用了MyBatis,所以打算使用MyBatis的foreach功能进行批量插入。数据库用的是Oracle,于是带着需求开始码代码。 2.MyBatis+MySQL实现批量插入数据的做法 &amp;lt;insert id=&quot;...
Mybatis 批量插入数据到Oracle
    最近项目有个功能,需要批量插入数据,使用的orm框架的是mybatis,在此记录一下     以oracle中scott用户的emp表为例     其中EMPNO为主键,HIREDATE为DATE类型,SAL、COMM、DEPTNO为NUMBER类型        oracle批量插入数据语法:       INSERT INTO table_name (column...
Oracle,mybatis批量插入,id自增
Boolean insertCalender(@Param(&quot;calenderList&quot;)List&amp;lt;DdCalender&amp;gt; calenderList);&amp;lt;insert id=&quot;insertCalender&quot; parameterType=&quot;java.util.List&quot;&amp;gt; &amp;lt;![CDATA[ INSERT INTO ST_TBL_DD_CALENDER (i...
巧用dual表,实现Oracle的批量插入
select '一','二' from dual union all select '三','四' from dual union all select '五','六' from dual union all
mybatis批量分批次插入oracle数据库,报ORA-01745: 无效的主机/绑定变量名...
方法一:循环调用插入单条记录的方法,效率真心让人捉急 (3万条数据,快三分钟)     public int saveGwghidlist1(List&amp;lt;Gwghid&amp;gt; list) {                  int xh=0;         deleteGwghidByCondition(&quot;&quot;);         if(list.size()&amp;gt;0){       ...
Oracle+Mybatis的foreach insert批量插入报错的快速解决办法
Oracle+Mybatis的foreach insert批量插入报错的快速解决办法 投稿:mrr 字体:[增加 减小] 类型:转载 时间:2016-08-26 我要评论 本文给大家介绍Oracle+Mybatis的foreach insert批量插入报错的快速解决办法,非常不错,具有参考借鉴价值,感兴趣的朋友参考下吧 最近做一个批量导入的需求,将多条记录批量
oracle一次插入多条数据(insert all)
问题 公司的项目,有个功能每次使用需要向数据库插入很多数据,导致页面等待很长时间才有结果。 数据库:oracle11g id:采用sequence自增 每次循环,都会查询一次sequence,然后insert一条数据,性能非常低。 改进 改成一次插入多条数据,id通过触发器自动设置,不再每次先查询sequence,效率提高非常多。 oracle一次插入多条的方法 在oracle...
当oracle+mybaits批量insert遇到CLOB类型字段
&amp;lt;!-- 批量新增--&amp;gt; &amp;lt;!-- 注意!!! mybaits批量插入CLOB字段时不能用下面batchInsertJxCmMaterialsContent2这个sql,会报错报错java.sql.SQLException: ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值 要用batchInsertJxCmMaterialsConte...
Oracle使用Mybatis实现List批量插入数据(转载)
Oracle使用Mybatis实现List批量插入数据
mybatis批量插入数据到oracle数据库
在进行大批量的历史数据迁移到数据库时需要用到mybatis的批量插入功能,这样可以提高程序的执行效率。基本的XML语句编写如下: insert into TB_LOAN_USER_SALARIES_DETAIL (ID,BANK_CARD_NO, OU_IP_ID, OU_NM, ORG_ID, ORG_NM, COM_LVL_TP_ID, COM_SCL_TP_
mybatis oracle 批量插入返回主键
mybatis 单个和批量插入MySQL与Oracle配置说明 1. mysql [html] view plain copy xml version="1.0" encoding="UTF-8" ?>   >   mapper namespace="cn.mysql.Mapper.BlackListMapper">        
mybatis 执行insert语句总是报错,ORA-00911 无效字符错误解决方法
这个错误是由于sql语句有问题,检查sql的时候没有看出什么问题,结果拿到pl/sql中执行没发现问题。查找资料后发现在库里查询时,查询语句结尾带了一个分号,库里面是支持这个分号的,但到mybatis 里面是不支持这个分号的,所以这点大家以后也应该注意下。       解决方法就是吧分号去掉就好了。
oracle+mybatis 使用动态Sql在要insert的字段不确定的情况下实现批量insert
最近做项目遇到一个挺操蛋的问题,由于业务的关系,DB的数据表无法确定,在使用过程中字段可能会增加,这样在insert时给我造成了很大的困扰。先来看一下最终我是怎么实现的: <![CDATA[ INSERT INTO tg_fcst_lines(${lineColumn}) select result.*,sq_fcst_lines.nextva
使用Mybatis的xml配置批量插入操作(批量插入只执行一条sql语句)
现在有两个表,分别是 订单条目表:orderitem 和 商品表:introduction; 现在我有需求是将查询出 某些商品表 中的 商品的某些属性 插入到 订单条目表 中的 某些属性中. 1 现在xml文件中写好两个表需要对应的字段. &amp;lt;!-- 3.将查询出的商品集合插入到订单条目中去 --&amp;gt; &amp;lt;insert id=&quot;insertOrderItem&quot; para...
mybatis中写sql语句的注意事项--批量新增数据
&amp;lt;select id=&quot;&quot; parameter=&quot;list&quot;&amp;gt; insert into 表名        &amp;lt;foreach collection=&quot;list&quot; item=&quot;item&quot; index=&quot;index&quot;  open=&quot;(&quot;  close=&quot;)&quot;  separator=&quot;union all&quot;&am
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 web批量拿站教程 机器学习可以用java