当前位置: 首页 > news >正文

sql语法 MyBatis <foreach> 标签详解

是 MyBatis 中用于遍历集合/数组的动态 SQL 标签,常用于 IN 查询、批量插入等场景。

<foreach collection="array"item="item"open="("separator=","close=")">#{item}</foreach>
属性说明示例值
collection要遍历的集合/数组的名称"array""list""coll"
item循环中每个元素的变量名"item""id"
open遍历结果前添加的字符"("
separator元素之间的分隔符","
close遍历结果后添加的字符")"

生成的 SQL 示例

假设传入的数组是 [1, 2, 3]:

(1,2,3)

完整用法

SELECT*FROMuserWHEREidIN<foreach collection="array"item="id"open="("separator=","close=")">#{id}</foreach>
SELECT*FROMuserWHEREidIN(1,2,3)

collection

collection 的值取决于传入参数的类型:

单个数组参数

List<User>selectByIds(Integer[]ids);
<foreach collection="array"item="id">...</foreach>

单个 List 参数

List<User>selectByIds(List<Integer>ids);
<foreach collection="list"item="id">...</foreach>

使用 @Param 注解命名

List<User>selectByIds(@Param("idList")List<Integer>ids);
<foreach collection="idList"item="id">...</foreach>

情况collection怎么写
单个List参数,无@Param"list"
单个数组参数,无@Param"array"
@Param("xxx")"xxx"(必须和注解里的名字一致)

如果传入的是一个对象(非集合)

publicclass SearchCondition { private List<Long>ids;private String name;// getter/setter}
List<User>selectByCondition(@Param("condition")SearchCondition condition);
<!-- 遍历对象内部的集合属性,用 "对象名.属性名" -->SELECT*FROMuserWHEREidIN<foreach collection="condition.ids"item="id"open="("separator=","close=")">#{id}</foreach>

对象内部包含集合属性, 这个属性一定要是集合(List,Array) 其他的不能使用foreach

传入参数类型collection怎么写能否用<foreach>
List"list"@Param指定的名字✅ 可以
数组"array"@Param指定的名字✅ 可以
对象(含集合属性)"对象名.集合属性名"✅ 可以(遍历内部集合)
普通对象(无集合属性)❌ 不能用,直接#{对象.属性}
http://www.jsqmd.com/news/1160471/

相关文章:

  • 2026年求推荐极紫外光谱仪供应商 5大选型标准汇总 - 速递信息
  • 甘肃品牌发布会策划:实力服务商选择策略深度解析
  • STM32 Cortex-M4 中断标志清除延迟:4个NOP指令解决单次事件触发两次中断
  • 【限时深度拆解】Perplexity Pro隐藏能力清单(92%用户从未启用的Pro专属功能):现在知道还不晚
  • OpenHarmony 3.2-5.0 镜像烧录:HDC工具12个核心命令与设备调试实战
  • 浪琴中国官方售后服务体系指南大全|官网认证地址及电话全新启用(2026年7月最新) - 浪琴中国服务中心
  • 计算机毕业设计之勤工俭学管理程序设计
  • Midjourney权重调优生死线:低于0.8权重形同虚设,高于2.2触发语义坍缩——2024最新v6.1权重阈值白皮书
  • 选择大型分子筛干燥器厂家要参考哪些核心维度 - 董不懂啊
  • 2026拳击培训行业测评白皮书|从数据看行业规范化进程
  • 终极指南:如何快速免费激活Cursor Pro功能并突破使用限制
  • 2026年怎么提升百度网盘下载速度?不限速解析黑科技PanDownload速度直接起飞
  • 2026印刷行业免费打样服务选型参考白皮书 - 招财兔数字员工
  • 云端标签打印软件的安全架构:码尚云标签的数据加密与权限管理
  • 2026年郑州婚纱照推荐榜 高口碑选购指南 - 谁都没有我好看
  • 直流负载管理优化:G6D-ASI继电器与PIC18LF45K42应用
  • 游戏程序员职级晋升 3 大核心误区:从 P5 到 P7 的 5 个关键认知转变
  • 哪些因素会影响城市基建用水泥管的选型 - WANGJX123
  • 甜品展示铝箔容器小份甜品怎么定容量?用真实食品、真实盖型和真实场景判断
  • 大模型产品形态四年演进的本质
  • 新品研发非标铝面板定制,哪家厂家支持小批量、多批次精密打样服务? - 热点速览
  • 2032年全球无线地面修剪机市场规模达5.55亿美元,园林工具电动化推动行业迈向高效智能新时代
  • 英飞凌/东芝 MOSFET 数据手册对比:3 大厂商关键参数解读与热设计差异分析
  • 2026年7月最新上海宇舶官方售后服务网点地址及客服电话一览 - 亨得利官方服务中心
  • 从GGUF到Ollama模型:3步完成自定义模型导入与适配
  • Seaborn vs Matplotlib vs Plotly:3种工具绘制热力图性能与效果深度对比
  • MATLAB Agentic Toolkit:技能化封装与任务驱动仿真新范式
  • C++ RPC参数求解实战:基于Eigen库的78参数最小二乘实现(附8405点测试)
  • 7月上海黄金回收防坑指南:实地走访拆解八两秤、折旧费行业猫腻 - 衡金阁
  • 百达翡丽中国官方售后服务网络全指南|官方网站权威公示(2026年7月最新) - 百达翡丽售后服务官网