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>