Mybatis 批量插入数据到Oracle

    最近项目有个功能,需要批量插入数据,使用的orm框架的是mybatis,在此记录一下

    以oracle中scott用户的emp表为例

    

其中EMPNO为主键,HIREDATE为DATE类型,SAL、COMM、DEPTNO为NUMBER类型

 

     oracle批量插入数据语法:

     

INSERT INTO table_name
  (column1, column2, column3)
  (SELECT ?, ?, ?
     FROM dual
   UNION ALL
   SELECT ?, ?, ?
     FROM dual
   UNION ALL
   SELECT ?, ?, ? FROM dual)
    添加两条数据到emp表

 

     

INSERT INTO EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,DEPTNO)
(
  SELECT '9527' ,'XINGXING','CLERK', 7902 ,TO_DATE('2012-03-14','yyyy-mm-dd'), 1000.00 , 20 FROM DUAL
  UNION ALL 
  SELECT '8888' ,'Jason','CLERK', 7902 ,TO_DATE('2012-03-15','yyyy-mm-dd'), 1500.00 , 20 FROM DUAL
)

    mybatis 中的emp.xml配置如下

    需求:批量向雇员表插入数据,参数为List,List中存放的是Map,Map中则以Key-Value形式存放数据信息

     如:Map {EMPNO="9527",ENAME="XINGXING",JOB="CLERK",MGR="7902",HIREDATE="2012-03-14",SAL="1000.00",DEPTNO="20"}

    

<insert id="insertData" parameterType="java.util.List" >
    	INSERT INTO EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,DEPTNO) (
    	<foreach collection="list" item="item" index="index" separator="union all">
    		select
    			#{item.EMPNO,jdbcType=VARCHAR},
    			#{item.ENAME,jdbcType=VARCHAR},
    			#{item.JOB,jdbcType=VARCHAR},
    			#{item.MGR,jdbcType=NUMERIC},
    			#{item.MGR,jdbcType=NUMERIC},
    			TO_DATE(#{item.HIREDATE,jdbcType=VARCHAR},'yyyy-mm-dd')
    			  from dual
    	</foreach>
    	)
</insert>

 

    现在就可以批量添加数据了-^-^-

 

    参考:http://www.dewen.org/q/6247

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值