【SpringBoot】Day10-10 删除员工

<foreach> 是 MyBatis 提供的一个非常有用的动态 SQL 元素,它允许你遍历一个集合(如 List、Set 或数组),并在生成的 SQL 语句中插入相应的值。这对于构建包含 IN 子句的 SQL 查询特别有用,但也可以用于其他需要重复某些模式的情况。

<foreach> 标签的基本属性

  • collection:指定要遍历的集合名称。这个名称应该与传递给映射器方法的参数名相匹配。如果你使用的是命名参数(例如通过 @Param 注解),那么这里应该是命名参数的名字;如果是一个简单类型的列表作为参数,那么可以使用默认关键字 list

  • item:表示当前迭代的元素别名。你可以用它在循环体内引用每个元素。

  • openclose:定义生成的 SQL 片段的开始和结束符号。例如,当你想要创建一个逗号分隔的列表时,可以设置 open="("close=")" 来包围整个列表。

  • separator:定义每个元素之间的分隔符。对于 IN 子句来说,通常是逗号 ,

  • index(可选):当遍历 Map 类型的数据结构时,index 表示键名,而 item 表示对应的值。对于列表或数组,index 可以用来获取元素的位置索引。

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

Controller层

@PathVariable List<Integer> ids

  • @PathVariable:此注解用于将 URL 中的模板变量绑定到方法参数上。例如,在路径 /delete/1,2,3 中,{ids} 将匹配 1,2,3 这一部分。

  • List<Integer> ids:这里指定了我们希望将路径变量 {ids} 解析并转换成一个 List<Integer> 类型的参数。Spring MVC 默认情况下并不直接支持将逗号分隔的字符串自动转换为列表,因此你需要确保请求 URL 的格式与你的预期一致,并且可能需要自定义解析逻辑或使用额外的配置来实现这一点。

 @DeleteMapping("/{ids}")
    public Result delete(@PathVariable List<Integer> ids) {
        log.info("批量删除员工,ids:{}",ids);
        empService.delete(ids);
        return Result.success();
    }

Service接口层

void delete(List<Integer> ids);

Service实现层

@Override
    public void delete(List<Integer> ids) {
        empMapper.delete(ids);
    }

Mapper层

void delete(List<Integer> ids);

XML文件

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值