• MyBatis传入参数为list、数组、map写法


    1.foreach简单介绍:

    foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。

    foreach元素的属性主要有item,index,collection,open,separator,close。

    item表示集合中每一个元素进行迭代时的别名,

    index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,

    open表示该语句以什么开始,

    separator表示在每次进行迭代之间以什么符号作为分隔符,

    close表示以什么结束,

    collection属性是在使用foreach的时候最关键的也是最容易出错的,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下3种情况: 

    (1)如果传入的是单参数且参数类型是一个List的时候,collection属性值为list .

    (2)如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array .

    (3)如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key.

    2.实践-实体类

    1.  
      public class Employees {
    2.  
      private Integer employeeId;
    3.  
      private String firstName;
    4.  
      private String lastName;
    5.  
      private String email;
    6.  
      private String phoneNumber;
    7.  
      private Date hireDate;
    8.  
      private String jobId;
    9.  
      private BigDecimal salary;
    10.  
      private BigDecimal commissionPct;
    11.  
      private Integer managerId;
    12.  
      private Short departmentId;
    13.  
      }

    3.实践-XML

    1.  
      <!--List:forech中的collection属性类型是List,collection的值必须是:list,item的值可以随意,Dao接口中参数名字随意 -->
    2.  
      <select id="getEmployeesListParams" resultType="Employees">
    3.  
      select *
    4.  
      from EMPLOYEES e
    5.  
      where e.EMPLOYEE_ID in
    6.  
      <foreach collection="list" item="employeeId" index="index"
    7.  
      open="(" close=")" separator=",">
    8.  
      #{employeeId}
    9.  
      </foreach>
    10.  
      </select>
    11.  
       
    12.  
      <!--Array:forech中的collection属性类型是array,collection的值必须是:list,item的值可以随意,Dao接口中参数名字随意 -->
    13.  
      <select id="getEmployeesArrayParams" resultType="Employees">
    14.  
      select *
    15.  
      from EMPLOYEES e
    16.  
      where e.EMPLOYEE_ID in
    17.  
      <foreach collection="array" item="employeeId" index="index"
    18.  
      open="(" close=")" separator=",">
    19.  
      #{employeeId}
    20.  
      </foreach>
    21.  
      </select>
    22.  
       
    23.  
      <!--Map:不单单forech中的collection属性是map.key,其它所有属性都是map.key,比如下面的departmentId -->
    24.  
      <select id="getEmployeesMapParams" resultType="Employees">
    25.  
      select *
    26.  
      from EMPLOYEES e
    27.  
      <where>
    28.  
      <if test="departmentId!=null and departmentId!=''">
    29.  
      e.DEPARTMENT_ID=#{departmentId}
    30.  
      </if>
    31.  
      <if test="employeeIdsArray!=null and employeeIdsArray.length!=0">
    32.  
      AND e.EMPLOYEE_ID in
    33.  
      <foreach collection="employeeIdsArray" item="employeeId"
    34.  
      index="index" open="(" close=")" separator=",">
    35.  
      #{employeeId}
    36.  
      </foreach>
    37.  
      </if>
    38.  
      </where>
    39.  
      </select>

    4.实践-Mapper

    1.  
      public interface EmployeesMapper {
    2.  
       
    3.  
      List<Employees> getEmployeesListParams(List<String> employeeIds);
    4.  
       
    5.  
      List<Employees> getEmployeesArrayParams(String[] employeeIds);
    6.  
       
    7.  
      List<Employees> getEmployeesMapParams(Map<String,Object> params);
    8.  
      }
       
       

      Mybaits 遍历Map【注解使用】

      1、遍历map

        

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      package com.isuzu.vehicle.onroad.dal.mapper;
       
      import com.baomidou.mybatisplus.core.mapper.BaseMapper;
      import com.isuzu.vehicle.onroad.dal.entity.VehicleOnroad;
      import com.isuzu.vehicle.onroad.service.vo.VehicleOnroadVo;
      import com.ne.ice.boot.common.entity.Page;
      import org.apache.ibatis.annotations.Param;
      import org.apache.ibatis.annotations.Result;
      import org.apache.ibatis.annotations.Results;
      import org.apache.ibatis.annotations.Select;
      import org.apache.ibatis.type.JdbcType;
       
      import java.util.Date;
      import java.util.List;
      import java.util.Map;
       
      /**
        * @author Yungui.Zheng
       */
      public interface VehicleOnroadMapper  extends BaseMapper<VehicleOnroad>
      {
       
          /**
           *  分页查询
           * @param page 分页对象
           * @param conditionMap  条件map
           * @param order 排序
           * @return 分页list
           */
          @Select("<script>"
                  " select   "
                  +"  *  "
                  " FROM   "
                  "   tm_vehicle_onroad "
                  +" <where> "
                  +" <foreach collection="cond.keys" item="wkey" >"
                  +"  <choose>  " +
                  "        <when test="wkey =='vin'">  " +//关键词
                  "           and vin like concat('%',#{cond[${wkey}]},'%')  " +
                  "        </when>  " +
                  "        <when test="wkey =='vinList'">  " +//用户vinList
                  "           and vin in ( " +
                  "                <foreach collection="cond[wkey]" item="item" index="index" separator=","> " +
                  "                    #{item} " +
                  "                </foreach>) " +
                  "        </when>  " +
                  "        <when test="wkey =='from'">  " +//开始时间
                  "           and create_time  >=#{cond[${wkey}]} " +
                  "        </when>  " +
                  "        <when test="wkey =='to'">  " +//结束时间
                  "           and create_time  <=#{cond[${wkey}]} " +
                  "        </when>  " +
                  "        <otherwise>  " +
                  "               <if test="cond[wkey]!= null">and   ${wkey}= #{cond[${wkey}]}</if> " +
                  "        </otherwise>  " +
                  "    </choose>"+
                  "</foreach>  "+
                  " </where> "
                  +" <if test="order!= null"> ${order}</if> "
                  "</script>")
          List<VehicleOnroad> selectPageByMap(Page<VehicleOnroad> page, @Param("cond") Map<String, Object> conditionMap, @Param("order") String order) ;
       
      }
       
  • 相关阅读:
    解决Requires: libc.so.6(GLIBC_2.14)(64bit)错误解决方法
    Linux下安装rpm出现error: Failed dependencies
    使用WordPress搭建个人博客
    Log4j不写入日志文件排错记录
    JAVA EE,JAVA SE,JAVA ME,JDK,JRE,JVM之间的区别
    [转]【maven】解决Missing artifact jdk.tools:jdk.tools:jar:1.6
    Eclipse新建项目介绍
    Android开发-API指南-<permission-group>
    Android开发-API指南-<permission>
    Android开发-API指南-<path-permission>
  • 原文地址:https://www.cnblogs.com/jxldjsn/p/15409664.html
Copyright © 2020-2023  润新知