<!--这个select不考虑传入的id集合为空的情况--> <selectid="queryBatch"resultType="employee"> select * from t_emp where emp_id in <!--这个foreach的遍历结果为:(1,2,3,……)--> <foreachcollection="ids"open="("close=")"separator=","item="id"> #{id} </foreach> </select>
批量删除
1 2 3 4 5 6 7
<deleteid="deleteBatch"> delete from t_emp where emp_id in <foreachcollection="ids"open="("close=")"separator=","item="id"> #{id} </foreach> </delete>
批量插入
每一个item项中都是固定格式(empName,empSalary)所以没有遍历前后的追加括号
1 2 3 4 5 6 7
<insertid="insertBatch"> insert into t_emp(emp_name,emp_salary) values <foreachcollection="list"separator=","item="employee"> (#{employee.empName},#{employee.empSalary}) </foreach> </insert>
批量更新
update比较特殊,没有什么能单独foreach的数据,所以将整条语句循环执行
1 2 3 4 5 6 7
<updateid="updateBatch"> <foreachcollection="employees"item="emp"> update t_emp set emp_name = #{emp.empName},emp_salary = #{emp.empSalary} where emp_id = #{emp.empId} </foreach> </update>