MyBatis 字符串分割匹配

<if test="contractNo!=null and contractNo!=''">
			and d.CONTRACT_NO in 
			<foreach item="item" index="index" collection="contractNo.split(',')" open="(" separator="," close=")">'${item}'</foreach>  
		</if>

例:contractNo里面参数为aa,bb,cc,dd

${item}’:这里只能是:$不能#

### MyBatis 中包含性匹配的概念与实现 在 MyBatis 的映射文件中,`<if>` 标签用于条件判断,而 `<foreach>` 标签则常用来处理集合类型的参数。对于包含性匹配的需求,通常是指在一个 SQL 查询中动态地构建 `IN` 子句,以确保查询的结果集中包含特定的一组值。 #### 使用 `<foreach>` 实现包含性匹配 当需要实现包含性匹配时,可以利用 MyBatis 提供的 `<foreach>` 动态 SQL 片段来遍历传入的列表,并将其转换成 SQL 语句中的 `IN` 表达式。下面是一个具体的例子: ```xml <select id="selectUsersByIds" parameterType="list" resultType="User"> SELECT * FROM users WHERE user_id IN <foreach item="id" collection="list" open="(" separator="," close=")"> #{id} </foreach> </select> ``` 此代码片段展示了如何通过传递一个 ID 列表作为参数,从而让 MyBatis 自动生成带有适当占位符的 SQL 语句[^1]。 为了进一步增强灵活性和可读性,还可以结合其他标签如 `<choose>`, `<when>`, 和 `<otherwise>` 来控制更复杂的逻辑分支。例如,在某些情况下可能还需要排除一些特定项;这时就可以先用 `<if>` 或者上述提到的选择结构来进行预过滤后再交给 `<foreach>` 去完成最终的拼接工作。 另外值得注意的是,虽然这里讨论的重点在于基于 Java 集合对象的操作,但在实际开发过程中也可能会遇到字符串形式存储多个值得情况——此时应当考虑使用正则表达式或者其他手段先行分割再做后续处理[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值