zoukankan      html  css  js  c++  java
  • mybatis中foreach的用法以及特殊的情况的用法

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

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

        item表示集合中每一个元素进行迭代时的别名,
        index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,
        open表示该语句以什么开始,
        separator表示在每次进行迭代之间以什么符号作为分隔 符,
        close表示以什么结束。


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

        1. 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
        2. 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
        3. 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可

    以封装成map,实际上如果你在传入参数的时候,在breast里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key 下面分别来看看上述三种情况的示例代码:

    1一个参数的情况 
    <select id="select" parameterType="java.util.List" resultType="User">
              select * from user where id in
           <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
                   #{item}       
            </foreach>    
        </select>

    2.多个参数的情况

      传入多个参数时的foreach  collection填数组名 集合名 用$符号接收参数

    <select id="getCurrencyLevelDistribution"  resultType="CurrencyLevelDistribution">
              SELECT  playerLevel, sum(price) as totalPrice, count(roleId) as num
              FROM charge
              WHERE 
                  state=1
                  <if test="serverIdArray!=null">
                       and serverId in
                       <foreach collection="serverIdArray" index="index" item="serverId" open="(" separator="," close=")">
                             ${serverId}
                       </foreach> 
                  </if>
                  <if test="channelIdArray!=null">
                       and channelId in
                       <foreach collection="channelIdArray" index="index" item="channelId" open="(" separator="," close=")">
                             ${channelId}
                       </foreach> 
                  </if>
              GROUP BY  playerLevel
        </select> 
     
  • 相关阅读:
    OutputCache 缓存key的创建 CreateOutputCachedItemKey
    Asp.net Web Api源码调试
    asp.net mvc源码分析DefaultModelBinder 自定义的普通数据类型的绑定和验证
    Asp.net web Api源码分析HttpParameterBinding
    Asp.net web Api源码分析HttpRequestMessage的创建
    asp.net mvc源码分析ActionResult篇 RazorView.RenderView
    Asp.Net MVC 项目预编译 View
    Asp.net Web.config文件读取路径你真的清楚吗?
    asp.net 动态创建TextBox控件 如何加载状态信息
    asp.net mvc源码分析BeginForm方法 和ClientValidationEnabled 属性
  • 原文地址:https://www.cnblogs.com/wgj-master/p/7852246.html
Copyright © 2011-2022 走看看