工作中,有很多地方需要用到批量删除或批量插入,或者是批量更新,抑或是批量查询,这样的需求难免会用到mybatis中的foreach标签
6个参数:
collection:要循环的集合
index:循环索引;
item:集合中的一个元素(item和collection,按foreach循环理解);
open:以什么开始;
close:以什么结束;
separator:循环内容之间以什么分隔
mybatis接受的参数分为:(1)基本类型;(2)对象;(3)List;(4)数组;(5)Map
接下来笔者主要对list,数组,map做详细讲解:
①入参为list,collection为list
底层mapper:
id="deleteWorkshopByIds" parameterType="Integer" > update workshop set status =0 where id in collection="list" index="i" item="id" open="(" separator="," close=")"> #{id}
dao层申明:
Integer deleteWorkshopByIds(Listids);
mapper测试
@Test public void test4(){ List测试结果:ids = new ArrayList<>(); ids.add(1); ids.add(2); ids.add(3); Integer i = workshopDao.deleteWorkshopByIds(ids); logger.info("删除:"+i); }
②入参为数组,collection为array
底层mapper:
id="deleteWorkshopByArray" parameterType="Integer" >
update workshop set status =0
where id in
collection="array" index="i" item="id" open="(" separator="," close=")">
#{id}
dao层申明:
Integer deleteWorkshopByArray(int[] arrays);mapper测试:
@Test public void test5(){ int[] array = new int[]{3,4,5}; Integer i = workshopDao.deleteWorkshopByArray(array); logger.info("删除:"+i); }测试效果:
③入参为map,collection为集合的名称
底层mapper:
dao层申明:
Listmapper测试:getWorkShopByMap(HashMap map);
@Test public void test6(){ List或者ids = new ArrayList<>(); ids.add(1); ids.add(2); ids.add(3); HashMap map = new HashMap(); map.put("ids",ids); map.put("status",1); List list= workshopDao.getWorkShopByMap(map); logger.info("查询的个数"+list.size()); }
@Test public void test6(){ int[] ids = new int[]{1,2,3}; HashMap map = new HashMap(); map.put("ids",ids); map.put("status",1); List测试效果:list= workshopDao.getWorkShopByMap(map); logger.info("查询的个数"+list.size()); }
在这里值得注意的是,实现类中put到map中集合的是key要与collection的值相等;
好了,今天就这样吧!我是张星,欢迎加入博主技术交流群,群号:313145288