mybatis有foreach循环遍历,避免数据库频繁查询数据库

例如以下代码

<select id="selectSkuList"
            resultType="xxxxxx.xxxxx.xxx">
        SELECT *from goods WHERE product_code in
        <foreach collection="skuCodes" item="skuCode" index="index" open="(" close=")" separator=",">
            #{skuCode}
        </foreach>
    </select>

我们可以看到很多参数
意思为

1. item 表示本次迭代获取的元素,若collection为List、Set或者数组,则表示其中的元素;若collection为map,则代表key-value的value,该参数为必选
2. open 表示该语句以什么开始,最常用的是左括弧’(’,注意:mybatis会将该字符拼接到整体的sql语句之前,并且只拼接一次,该参数为可选项
3. close 表示该语句以什么结束,最常用的是右括弧’)’,注意:mybatis会将该字符拼接到整体的sql语句之后,该参数为可选项
4. separator mybatis会在每次迭代后给sql语句append上separator属性指定的字符,该参数为可选项
5. index 在list、Set和数组中,index表示当前迭代的位置,在map中,index代指是元素的key,该参数是可选项

数据源代码

    List<sku> selectSkuList((@Param("skuCodes") List<String> skuCodes);

(@Param(“skuCodes”) 必传

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐