最近项目有个功能,需要批量插入数据,使用的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 INTO EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,DEPTNO) (
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
)
现在就可以批量添加数据了-^-^-
参考:http://www.dewen.org/q/6247