本文主要是介绍Mybatis3系列课程-foreach,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
学习目标
在实际操作中,经常会遇到多项删除, 通过checkbox 选择多项,然后单击[删除]按钮,
这种操作呢 实际很简单 ,只需要多传递几个参数即可 这时候 会用到 foreach标签
<foreach>属性介绍
collection 有三种格式:list,array,map。按照传递参数的类型填写对应格式。
item 标签内对象集的参数名
separator 每个子循环结束后的分隔符,常用","
open 开始符,常用"("
close 结束符,常用")"
index 在list和array中,index指元素序号;在map中,index指元素key。从0开始自增(相当于数组下标)
步骤
按照 学生编号 删除学生信息,
1. 修改 StudentMapper.java
/*** 按照学号 进行多条删除* @param ids*/void delByIds(int[] ids);
2.修改StudentMapper.xml 增加 delete 标签
<delete id="delByIds" parameterType="int[]">delete from student<where><if test="array !=null and array.length>0"><foreach collection="array" open=" sid in ( " close=" ) " item="id" separator=",">#{id}</foreach></if></where></delete>
3. 编写测试类
@Testpublic void testDel() throws IOException {//获得SqlSessionSqlSession session = sqlSessionFactory.openSession();StudentMapper mapper = session.getMapper(StudentMapper.class);//int[] nums = {9,6,7,10,8};mapper.delByIds(nums);session.commit();List<Student> list = mapper.query("","");list.forEach((e)->System.out.println(e));}
代码里 执行完 删除后 ,必须 执行 session.commit() 提交事务
运行前数据
删除 6,7,8,9,10
总结
1. 如果接口中使用的 参数类型为 数组, 则在foreach 中 必须使用 array 来代替
本案例中 StudentMapper.java 中 delByIds(int[] ids) 这里参数类型为 数组, 因此
在 StudentMapper.xml 中 使用 array 来代替
2. 如果接口中使用的 参数类型为集合,则 在foreach中 必须使用 list代替
这篇关于Mybatis3系列课程-foreach的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!