MyBatis如何进行双重foreach循环
作者:harden_no1
这篇文章主要介绍了MyBatis如何进行双重foreach循环,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
进行双重foreach循环
mapname是一个Map<String,Map<String,Object>> 对象
<foreach collection="mapname" index="key1" item="value1" separator=","> <foreach collection="value1" index="key2" item="value2" separator=","> #{key1}, #{key2}, #{value2} </foreach> </foreach>
使用场景
比如说一个付款人下面对应的运单的金额,那么key1就是付款人编号,key2是运单编号,value2是分摊的金额
mybatis foreach循环,传入多个参数
上代码
controller:
@RequestMapping(value = "/findPage", method = RequestMethod.POST) @ResponseBody public Object findPage(@RequestParam(required=false) String jobCategory,@RequestParam(required=false) String ids,@RequestParam(required=false) String cities) { try { List<Integer> listJob = new ArrayList<Integer>(); List<Integer> listIds = new ArrayList<Integer>(); List<String> listCities = new ArrayList<String>(); //按照城市名称和工种查询 if(StringUtils.isNotBlank(jobCategory) && StringUtils.isNotBlank(cities)){ String[] temp = jobCategory.split(","); String[] cityTemp = cities.split(","); for(int i=0;i<temp.length;i++){ listJob.add(Integer.valueOf(temp[i])); } for(int i=0;i<cityTemp.length;i++){ listCities.add(cityTemp[i]); } List<WebsitesJob> list = jobService.findPage(listJob, listIds, listCities); return new ExtGridReturn(list.size(), list); } //按照工种查询 if(StringUtils.isNotBlank(jobCategory)){ String[] temp = jobCategory.split(","); for(int i=0;i<temp.length;i++){ listJob.add(Integer.valueOf(temp[i])); } } //按照职位名称查询 if(StringUtils.isNotBlank(ids)){ String[] temp = ids.split(","); for(int i=0;i<temp.length;i++){ listIds.add(Integer.valueOf(temp[i])); } } //按照城市查询 if(StringUtils.isNotBlank(cities)){ String[] temp = cities.split(","); for(int i=0;i<temp.length;i++){ listCities.add(temp[i]); } } List<WebsitesJob> list = jobService.findPage(listJob, listIds, listCities); return new ExtGridReturn(list.size(), list); } catch (Exception e) { LOGGER.error("分页获取信息出错", e); return new ExceptionReturn(e); } }
mapper
/** * 描述:根据工种查询列表 * @param jobCategorys * @return */ List<WebsitesJob> findPage(@Param("jobCategorys") List<Integer> jobCategorys,@Param("ids") List<Integer> ids,@Param("workPlace") List<String> workPlace);
xml
<!-- 前台查询列表 --> <select id="findPage" resultType="cn.edu.hbcf.plugin.websites.pojo.WebsitesJob"> select n.ID id, n.NAME name, n.WORKPLACE workPlace, n.JOBCATEGORY jobCategory, n.SALARY salary, n.RESPONSIBILITIES responsibilities, n.REQUIREMENTS requirements, n.ISHOT isHot, n.UPDATEDATE updateDate, n.UPDATEUSER updateUser, u.real_name updateName from websites_job n left join base_users u on n.updateUser = u.account <where> <if test="jobCategorys.size()!=0"> or n.jobCategory in <foreach collection="jobCategorys" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="ids.size()!=0"> or n.id in <foreach collection="ids" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="workPlace.size()!=0"> or n.WORKPLACE in <foreach collection="workPlace" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach> </if> </where> order by n.ISHOT,n.ID desc </select>
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。