关于 mybatis 中 in 写法,<foreach collection="xxx" item="xxx" index="index" open="(" separator="," close=")"> 参数详解
转自:https://www.cnblogs.com/xuehuashanghe/p/12882762.html
使用 mybatis 时,如果要使用到 in 写法,要使用 foreach ,里面几个参数,看了很多地方,都说的不清不楚,自己最后各种测试,这里详细说下:
(1)collection = “” ,这个参数是 dao 层(mapper)接口方法里面传过来的集合参数,如果dao 层传的参数只有一个,这里写关键字 list(如果是数组,写 array)
例子:
dao 层:User getInfo(List<Integer> user_ids)
collection = "list"
【
如果有多个参数,并且使用了 @Param 注解(import org.apache.ibatis.annotations.Param),则这里要写注解里面的参数!
例子: dao 层 :User getInfo(@Param("user_ids")List<Integer> user_ids,@Param("xxx")String xxx)
collection = "user_ids"
】
(2)item = “” ,集合里面的单个值,给下面 #{ } 用
(3)index = "" ,这个是遍历的下标,举个简单的例子立刻明白,就是平时 for 循环,我们定义的 i 一样
例子: for(int i = 0 ;i < 10 ; i ++){
}
因此这个参数随便定义都可以,有就行
(4)open separator close 这3个比较好理解,就是 ( , , ,) 这样子啦,拼接括号,中间逗号隔开的意思
select:
List<CityCollection> getCollectionByIdList(@Param("idList")List<Integer> idList);
SELECT
c.id,
c.city_image_url cityImageUrl,
c.province_name provinceName,
c.country_name countryName,
c.city_name cityName,
ce.city_name enCityName,
ce.country_name enCountryName,
ce.province_name enProvinceName
FROM
t_c c
LEFT JOIN t_ci_en ce ON ce.id = c.id
WHERE
c.id IN
<foreach collection="idList" index="index" item="item" open="("
separator="," close=")">
#{item}
</foreach>
ORDER BY
field (
c.id,
<foreach collection="idList" item="item" separator=",">
#{item}
</foreach>
)
删除:
Integer deleteAllCollectionByIdListAndUserId(@Param("idList")List<Integer> idList, @Param("userId")Integer userId);
DELETE
FROM
t_collection_city
WHERE
city_id IN
<foreach collection="idList" index="index" item="item" open="("
separator="," close=")">
#{item}
</foreach>
AND
user_id = #{userId}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)