mybaits十七:使用foreach标签

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>  

猜你喜欢

转载自blog.csdn.net/m0_37564426/article/details/88938289