Mybatis遍历查询 ——foreach
第一步:
在xxxMapper接口中添加一个函数,返回一个list,这里的参数是一个integer类型的集合
public List<Emp> findEmpByList(@Param("list") List<Integer> list);
第二步:
在xxxMapper.xml 中添加statement语句(SQL语句)。
如SQL语句:select * from employee where id in (1 ,2 , 3,4 );
<select id="findEmpByList" resultType="com.neuedu.bean.Emp"> select * from employee where id in <!-- select * from employee where id in ( , , , ); -->
<foreach collection="list" item="id" open="(" close=")" separator=","> #{id} </foreach> </select>
foreach标签中
collection:指定要遍历的集合
item:将当前遍历出的元素赋值给指定的变量
separator:每个元素之间的分隔符
open:遍历出所有结果拼接一个开始的字符
close:遍历出所有结果拼接一个结束的字符
第三步:测试
@Test public void testFindEmpByList(){
//获取IOC容器 ApplicationContext ioc=new ClassPathXmlApplicationContext("spring.xml");
//从IOC容器中获取bean对象 EmployeeMapper bean = ioc.getBean(EmployeeMapper.class);
//创建一个集合 List<Integer> list=Arrays.asList(1,2,3);
//使用bean对象的方法 List<Emp> findEmpByList = bean.findEmpByList(list); for (Emp emp : findEmpByList) { System.out.println(emp); } }