Mybatis中For循环foreach

本文详细介绍了在Mybatis中如何使用动态SQL语句,特别是如何正确地使用if和foreach标签来处理列表数据,确保代码的健壮性和效率。文章强调了在条件判断中and关键字必须为小写的重要性。

在Mybatis中添加

		<if test="list != null and list.size() > 0">
        <foreach collection="list" item="item" close=")" separator="," open="(">
             #{item}
        </foreach>
   	 </if>
    一定要主要and一定是小写,大写会报错
MyBatis 中,可使用 `<foreach>` 标签实现 for 循环功能,常应用于 SQL 语句的 `IN` 子句中。以下是几种不同场景下的使用方法: ### 单参数 List 情况 若传入的参数是一个 `List`,`collection` 属性值为 `List` 本身。以下是示例代码: ```xml <select id="selectUsers" parameterType="java.util.List" resultType="User"> select * from d_user where id in <foreach collection="Ids" item="id" index="index" open="(" separator="," close=")"> #{id} </foreach> </select> ``` 在上述代码里,`collection` 为传入的 `List` 名称 `Ids`,`item` 是遍历过程中每个元素的别名,`index` 为元素的索引,`open` 是开始符号,`separator` 是分隔符,`close` 是结束符号 [^2]。 ### 多参数封装成 Map 情况 当传入的参数有多个时,需将它们封装成一个 `Map`,此时 `collection` 属性值是传入的 `List` 或数组对象在封装的 `Map` 里的 `key`。示例如下: ```java List<String> list = new ArrayList<>(); Map<String, Object> map = new HashMap<>(); map.put("array", list); ``` ```xml <select id="selectSomething" parameterType="java.util.Map" resultType="SomeResult"> select * from some_table where some_column in <foreach item="workcode" index="index" collection="array" open="(" separator="," close=")"> #{workcode} </foreach> </select> ``` 这里 `collection` 的值 `array` 就是 `List` 在 `Map` 中的 `key` [^1][^3]。 ### 示例 SQL 效果 下面是一个具体的 SQL 示例,展示使用 `<foreach>` 标签后的 SQL 效果: ```sql select * from Calculate_IdeaCommissionSum where calculateYear=2019 and calculateMonth=2 and roleName in ('副总经理','总监','经纪人'); ``` 在 MyBatis 中可通过 `<foreach>` 标签动态生成这样的 SQL 语句 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值