foreach
遍历集合
使用场景:遍历id为(1,3,4)的员工信息。
- 创建接口EmployeeDynamicSQLMapper.java,在接口中定义条件查询方法。
public interface EmployeeDynamicSQLMapper {
//查询员工id'在给定集合中的
public List<Employee> getEmpsByConditionForeach(@Param("ids")List<Integer> ids);
}
- 创建EmployeeDynamicSQLMapper接口对应的sql映射文件EmployeeDynamicSQLMapper.xml。并通过foreach遍历集合查询。
<select id="getEmpsByConditionForeach" resultType="com.fzl.mybatis.bean.Employee">
select * from tbl_employee where id in
<!--
1.collection:指定要遍历的集合:list类型的参数会特殊处理封装在map中,map的key就叫list
2.item:将当前遍历出的元素赋值给指定的变量
3.separate:每一个元素之间的分隔符
4.open:遍历出所有结果拼接一个开始的字符
5.close:遍历出所有结果拼接一个结束的字符
#{变量名}就能取出变量的值也就是当前遍历出的元素
-->
<foreach collection="ids" item="item_id" open="(" close=")" separator=",">
#{item_id}
</foreach>
</select>
- 测试
@Test
public void test1() throws IOException {
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
try{
EmployeeDynamicSQLMapper mapper = openSession.getMapper(EmployeeDynamicSQLMapper.class);
Employee employee = new Employee(1, "zhang", "236534568@qq.com", null);
List<Employee> list = mapper.getEmpsByConditionForeach(Arrays.asList(1,3,4));
for(Employee e:list){
System.out.println(e);
}
}finally{
openSession.close();
}
}
- 运行结果
<foreach></foreach>
各属性作用
1.collection:指定要遍历的集合:list类型的参数会特殊处理封装在map中,map的key就叫list。
2.item:将当前遍历出的元素赋值给指定的变量。
3.separate:每一个元素之间的分隔符。
4.open:遍历出所有结果拼接一个开始的字符。
5.close:遍历出所有结果拼接一个结束的字符。
#{变量名}就能取出变量的值也就是当前遍历出的元素