MyBatis如何进行双重foreach循环

 更新时间:2022年02月08日 11:14:29   作者: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>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • IDEA Maven依赖下载总是失败的几种解决方法

    IDEA Maven依赖下载总是失败的几种解决方法

    我们本地使用 IDEA 运行 maven 项目的时候,有时候运气不好,就会遇到某些 maven 依赖无法正常找到、导入,这就会导致 IDEA 构建项目的时候爆出一堆醒目的红色 Error,今天给大家分享IDEA Maven依赖下载总是失败的几种解决方法,感兴趣的朋友一起看看吧
    2023-09-09
  • Java使用FileReader读取文件详解

    Java使用FileReader读取文件详解

    本文将为大家介绍FileReader类的基本用法,包括如何创建FileReader对象,如何读取文件,以及如何关闭流,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-09-09
  • 通过Java来测试JSON和Protocol Buffer的传输文件大小

    通过Java来测试JSON和Protocol Buffer的传输文件大小

    这篇文章主要介绍了通过Java来测试JSON和Protocol Buffer的传输文件大小,Protocol Buffer(文中简称Protobuffer)是谷歌开发的新的文件传输格式,需要的朋友可以参考下
    2015-12-12
  • resty client使用Java客户端来访问Api

    resty client使用Java客户端来访问Api

    这篇文章主要介绍了resty-client使用Java客户端来访问Api的验证权限,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Java中为什么重写equals()也需要重写hashCode方法

    Java中为什么重写equals()也需要重写hashCode方法

    这篇文章主要介绍了Java中为什么重写equals()也需要重写hashCode(),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • JAVA下单接口优化实战TPS性能提高10倍

    JAVA下单接口优化实战TPS性能提高10倍

    今天小编就为大家分享一篇关于JAVA下单接口优化实战TPS性能提高10倍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • JavaEE微框架Spring Boot深入解读

    JavaEE微框架Spring Boot深入解读

    spring框架作为JavaEE框架领域的一款重要的开源框架,在企业应用开发中有着很重要的作用。接下来通过本文给大家介绍JavaEE微框架Spring Boot深入解读,需要的朋友可以参考下
    2017-04-04
  • java实现图书检索系统

    java实现图书检索系统

    这篇文章主要为大家详细介绍了java实现图书检索系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Java处理延时任务的常用几种解决方案

    Java处理延时任务的常用几种解决方案

    本文主要介绍了Java处理延时任务的常用几种解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • springBoot2.X配置全局捕获异常的操作

    springBoot2.X配置全局捕获异常的操作

    这篇文章主要介绍了springBoot2.X配置全局捕获异常的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07

最新评论