一. 例子
EmployeeMapperDynamicSQL.java
package com.atguigu.mybatis.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.atguigu.mybatis.beans.Employee;
public interface EmployeeMapperDynamicSQL {
public List<Employee> selectEmployeeByIds(@Param("ids")List<Integer> ids);
}
EmployeeMapperDynamicSQL.xml
<!-- public List<Employee> selectEmployeeByIds(@ParamList<Integer> ids); -->
<select id="selectEmployeeByIds" resultType="com.atguigu.mybatis.beans.Employee">
<!--
select * from tbl_employee where id in (?, ?, ?...)
select * from tbl_employee where id in = ? or id = ? or id = ?...)
collection: 指定要迭代的集合
item: 当前从集合中迭代出的元素
open: 开始字符
close: 结束字符
separator: 元素与元素之间的分隔符
index:
List:index表示当前元素的下标
Map:index表示的是当前元素的key
-->
select id, last_name, email, gender from tbl_employee
where id in
<foreach collection="ids" item="currId" open="(" close=")" separator=",">
#{currId}
</foreach>
</select>
TestMyBatisDynamicSQL.java
@Test
public void testForeach() throws Exception{
SqlSessionFactory ssf = getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
EmployeeMapperDynamicSQL mapper = session.getMapper(EmployeeMapperDynamicSQL.class);
List<Integer> ids = new ArrayList<>();
ids.add(1001);
ids.add(1005);
ids.add(1006);
List<Employee> emps = mapper.selectEmployeeByIds(ids);
System.out.println(emps);
session.commit();
} finally {
// TODO: handle finally clause
session.close();
}
}
public SqlSessionFactory getSqlSessionFactory() throws Exception {
String resource = "mybatis-config.xml";
InputStream inputStream =
Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory;
}