JavaWeb——Mybatis-动态SQL(2/3)-foreach(概述、需求分析、传统 SQL 方式、MyBatis foreach 标签的作用、关键属性解析)

目录

概述

需求分析

传统 SQL 方式

MyBatis foreach 标签的作用

foreach 标签使用示例

关键属性解析

Java 代码调用示例

生成的 SQL 语句

foreach 标签的应用场景

总结


MyBatis 动态 SQL foreach 标签

概述

        MyBatis 的 foreach 标签用于在 SQL 语句中 循环遍历集合,常见于 批量操作(如批量删除、批量插入)。它允许我们动态构建 SQL 语句,从而提高开发效率。

需求分析

员工管理系统 中,有一个 批量删除 功能:

  1. 用户勾选多个员工后,点击 批量删除 按钮。
  2. 前端将 选中的员工 ID 列表 发送给服务端。
  3. 后端接收 ID 列表,并执行 批量删除 SQL 语句

传统 SQL 方式

示例:删除 ID 为 18、19、20 的员工

delete from emp where id in (18, 19, 20);

此 SQL 语句中的 IN 语法,适用于 MyBatis foreach 进行动态拼接。

MyBatis foreach 标签的作用

通过 foreach 标签,我们可以动态构造 IN 语句,使 SQL 语句支持 批量操作,避免手写多个 OR 条件。

foreach 标签使用示例

<delete id="deleteByIds">
    delete from emp
    where id in
    <foreach collection="ids" item="id" separator="," open="(" close=")">
        #{id}
    </foreach>
</delete>

关键属性解析

  • collection="ids":指定要遍历的集合,通常是方法参数的名称。
  • item="id":定义遍历出的单个元素,相当于 for 循环中的临时变量。
  • separator=",":每个元素之间使用 , 号分隔。
  • open="(":循环开始时添加 (
  • close=")":循环结束时添加 )

Java 代码调用示例

List<Integer> ids = Arrays.asList(18, 19, 20);
empMapper.deleteByIds(ids);

生成的 SQL 语句

delete from emp where id in (18, 19, 20);

🔹 动态拼接 IN 语句,无需手写多个 OR 条件,提升灵活性!

foreach 标签的应用场景

  1. 批量删除:如本案例所示,删除多个员工。
  2. 批量插入:一次性插入多条数据。
  3. 批量更新:针对多个记录进行不同的更新。

总结

  • foreach 标签适用于 批量操作,减少 SQL 语句的重复,提高灵活性。
  • 自动处理 SQL 语法问题(如 , 分隔符、() 括号等),避免 SQL 语法错误。
  • 代码更简洁易维护,适用于 MyBatis 中 集合数据的动态拼接

推荐在批量操作中使用 foreach,以提升 SQL 语句的动态性和可读性


END 


学习自:黑马程序员——JavaWeb课程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值