foreach标签查询
主要用于构建in条件,他可以在sql中对集合进行迭代
<select id="getEmpsByConditionForeach" resultType="com.atChina.bean.Employee">
select * from emptest
<!-- collection:指定遍历的集合
item:将当前遍历出的元素赋值指定的变量
separator:每个元素之间的分隔符
open:遍历出所有结果拼接一个开始的字符
close: 遍历出所有结果拼接一个结束的字符
index:遍历list的时候,index就是索引,item就是当前值
遍历map的时候index表示的就是map的key,item就是map的值
#{变量名}就是取出变量的值也就是当前遍历出的元素.
-->
<foreach collection="list" item="item_no" separator=","
open="where empno in(" close=")">
#{item_no}
</foreach>
</select>
foreach标签插入:(oracle数据库)
方式一:使用union all, 中间表dual
<insert id="addEmps">
insert into emptest(empno, ename, job, mgr,hiredate,sal)
<foreach collection="list" item="emp" separator="union all">
(select #{emp.empno}, #{emp.ename}, #{emp.job}, #{emp.mgr}, #{emp.hiredate}, #{emp.sal} from dual)
</foreach>
</insert>
方式二: 使用insert all into, 中间表dual
<insert id="addEmps">
INSERT ALL
<foreach collection="list" index="index" item="emp">
into emptest(empno, ename, job, mgr,hiredate,sal) values
( #{emp.empno}, #{emp.ename}, #{emp.job}, #{emp.mgr}, #{emp.hiredate}, #{emp.sal} )
</foreach>
select 1 from dual
</insert>
方式三: 使用begin..end;
<insert id="addEmps">
<foreach collection="list" item="emp" open="begin" close="end;">
insert into emptest(empno, ename, job, mgr,hiredate,sal) values
( #{emp.empno}, #{emp.ename}, #{emp.job}, #{emp.mgr}, #{emp.hiredate}, #{emp.sal} );
</foreach>
</insert>