Mybatis中Mysql和Oracle的批量保存

MYSQL的批量保存:

<!-- MYSQL:批量保存记得切换数据源(allowMultiQueries=true)
    这种分号分隔多个SQL可一个用于其他的批量操作(删除,修改)-->
    <!--  public void addDepts(@Param("depts") List<Dept> depts); -->
    <insert id="addDepts" databaseId="mysql">
        <foreach collection="depts" item="dept" separator=";">
        insert into dept(deptno,dname,loc)
        values(#{dept.deptno},#{dept.dname},#{dept.loc})
        </foreach>
    </insert>

Oracle的批量保存:两种方法

<!-- Oracle:批量保存
        方法1:多个INSERT放在begin ...end之间
        begin 
               insert into dept(deptno,dname,loc) values (dept_seq.nextval,'111','AAA');
              insert into dept(deptno,dname,loc) values (dept_seq.nextval,'222','BBB');
        end;
        方法2利用中间表
        insert into dept(deptno,dname,loc) 
         select dept_seq.nextval,dname,loc from(
                select '333' dname ,'CCC' loc from dual
                union
                 select '444' dname,'DDD' loc from dual
                  union
                 select '555' dname,'EEE' loc from dual
         )
     -->
     <!--  public void addDepts(@Param("depts") List<Dept> depts); -->
    <insert id="addDepts" databaseId="oracle" 
    parameterType="com.jadeon.mybatis.bean.Dept">
    <!-- Oracle:批量保存方法1  -->
        <!-- <foreach collection="depts" item="dept" open="begin" close="end;">
               insert into dept(deptno,dname,loc) 
                   values (dept_seq.nextval,#{dept.dname},#{dept.loc});
        </foreach> -->
    <!-- Oracle:批量保存方法2  -->
    insert into dept(deptno,dname,loc) 
        select dept_seq.nextval,dname,loc from(
            <foreach collection="depts" item="dept" separator="union" >
                       select #{dept.dname} dname ,#{dept.loc} loc from dual
            </foreach>
        )
    </insert>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值