(21)MyBatis的动态SQL:foreach元素

573人浏览 / 0人评论

关于动态SQL另外一个常用的操作就是需要对一个集合进行遍历,通常发生在构建IN条件语句时。


SELECT * FROM tb_employee WHERE ID in

#{item}

foreach元素的功能非常强大,它允许指定一个集合,声明可以用在元素体内的集合项和索引变量。它也允许指定开闭匹配的字符串以及在迭代中间放置分隔符。这个元素是很智能的,
因此它不会随机地附加多余的分隔符。

// 根据传入的id集合查询员工
List selectEmployeeIn(List ids);
selectEmployeeIn方法传入的参数是一个List集合,该集合中的每一个Integer元素表示需要查询的员工的id。

public void testSelectEmployeeIn(sqlSession session){
EmployeeMapper em = session.getMapper(EmployeMapper.class);
// 创建List集合
List ids = new Arraylist();
// 往List集合中添加两个测试数据
ids.add(1);
ids.add(2);
List 1ist = em.selectEmployeeIn(ids);
list.forEach(employee->System.out.println(employee));
}
测试selectEmployeeln方法,控制台显示如下:
DEBUG [main]==> Preparing: SELECT * FROM tb employee WHERE ID in( ? , ? )
DEBUG [main]==> Parameters: 1(Integer) , 2 (Integer)
DEBUG [main]<== Total: 2
Employee [id=1,loginname=jack,password=123456,name=杰克,sex=男,age=26,phone=13902019999,sal=9800.0,state=ACTIVE]
Employee [id=2,loginname=rose,password=123456,namem露丝,sex=女,age=21,phone=13902018888,sal=6800.0,state=ACTIVE]
可以看到,执行的sql语句是一个in条件语句,返回的是List集合中的id的员工数据。

全部评论

晴天下起了小雨
2017-10-01 18:00
很喜欢,果断关注了
wjmyly7336064
2017-10-01 18:00
相当实用,赞美了
橘大佬
2017-10-01 18:00
就是有些细节再到位点就好了…