软件编程
位置:首页>> 软件编程>> java编程>> MyBatis如何进行双重foreach循环

MyBatis如何进行双重foreach循环

作者:harden_no1  发布时间:2022-11-24 22:54:17 

标签: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>

来源:https://blog.csdn.net/harden_no1/article/details/122442784

0
投稿

猜你喜欢

  • 前言我们开始 Flutter 动画相关篇章之旅,在应用中通过动效能够给用户带来更愉悦的体验,比较典型的例子就是一些直播平台的动效了,比如送火
  • 关于ListBoxListBox是WinForm中的列表控件,它提供了一个项目列表(一组数据项),用户可以选择一个或者多个条目,当列表项目过
  • 本文实例为大家分享了Unity实现10天签到系统的具体代码,供大家参考,具体内容如下实现功能:正常在游戏中签到,并把剩下的倒计时给显示出来。
  • C#客户端程序,生成后是一个exe,如果带有大量的dll,那么dll和exe会混乱在一起,看起来非常混乱,我们可以建立一个文件夹,把dll放
  • 很多人使用Nacos其实并没有真正的去读过官网,以至于忽视了很多重要的细节,Nacos为我们提供了大量API,但是这些API默认是没有开启认
  • using System;using System.Collections.Generic;using System.Net;using S
  • 一、算法描述波雷费密码是一种对称式密码,是首种双字母取代的加密法。下面描述算法步骤:1、从1号二维码M05,提取明文信息和密文,M05格式:
  • 代码如下一、创建CheckCode.xaml代码如下<ResourceDictionary xmlns="http
  • 前言写Android:如何编写“万能”的Activity的这篇文章到现在已经好久了,但是由于最近事情较多,写重构篇的计划就一直被无情的耽搁下
  • 安装Java:安装J2SE开发工具包5.0(JDK 5.0)下载:Java官方网站。请确保以下环境变量设置,如下所述:JAVA_HOME:
  • Java8对集合提供了一种流式计算的方式,这种风格将要处理的元素集合看 作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如
  • 帮我们实现各种类型的复杂手势操作。其实例通过静态工厂创建ViewDragHelper一般用在一个自定义ViewGroup的内部。初始化操作
  • 前言Zuul 是Netflix 提供的一个开源组件,致力于在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。也有很多公司使用它来作为
  • 本文实例为大家分享了Android RecyclerView使用的具体代码,供大家参考,具体内容如下package com.itheima7
  • 目录1、下面的代码运行的结果是:2、下面有关java实例变量,局部变量,类变量和final变量的说法,错误的是?3、执行如下代码段后,变量s
  • 本文将是JVM 性能优化系列的第二篇文章(第一篇:传送门),Java 编译器将是本文讨论的核心内容。本文中,作者(Eva Andreasso
  • 本文实例为大家分享了android实现注册页面开发的具体代码,供大家参考,具体内容如下在values文件里创建以下几个文件colors代码:
  • 作者: juky_huang 事件的简单解释: 事件是对象发送的消息,以发信号通知操作的发生。操作可能是由用户交互(例如
  • 从大学就开始做C#这块,也做C#几年了,最近又从ios转回.Net,继续做C#,之前也没有写博客的习惯,写博客也是从我做ios的时候开始的,
  • 导入redis的jar包<!-- redis -->    <dependency>  
手机版 软件编程 asp之家 www.aspxhome.com