Oracle数据库批量保存, Oracle不支持values(),(),()
SQL:
1、
begin insert into emp(emp_id,name,email) values(1000,'李白','11@11.com'); insert into emp(emp_id,name,email) values(1001,'李二白','22@22.com'); end;
2、
insert into emp(emp_id,name,email) select emp_id,name,email from( select 1000 emp_id ,'李白' name,'11@11.com' email from dual union select 1001 emp_id ,'李二白' name,'t22@22.com' email from dual )
xml:
collection:指定要遍历的集合:
item:将当前遍历出的元素赋值给指定的变量
separator:每个元素之间的分隔符
open:遍历出所有结果拼接一个开始的字符
close:遍历出所有结果拼接一个结束的字符
<!-- oracle第一种批量方式 --> <insert id="addEmps"> <foreach collection="emps" item="emp" open="begin" close="end;"> insert into emp(emp_id,name,email) values(#{emp.emp_id},#{emp.name},#{emp.email}); </foreach> <insert>
<!-- oracle第二种批量方式 --> <insert id="addEmps"> insert into emp(emp_id,name,email) <foreach collection="emps" item="emp" separator="union" open="select emp_id,name,email from(" close=")"> select #{emp.emp_id} emp_id ,#{emp.name} name,#{emp.email} emai from dual </foreach> </insert>