关于mapper中SQL条件的使用

文章介绍了在Mapper中处理SQL查询条件时,如何使用in和foreach标签。对于查询多个值,可以使用in配合foreach遍历List来实现,或者在条件中直接处理以竖线分隔的字符串。文章提到了传入参数通常是实体类,并且在事务层需要对传入的值进行处理,如将|分隔的字符串转换为List。最后,作者提出两者在性能上的差异主观上无法判断,欢迎讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于mapper中SQL条件的使用

前言

关于mapper中SQL条件的使用

等于某个值不必说,主要记录一下最近遇到的条件里一次查询多个值


提示:以下是本篇文章正文内容,下面案例可供参考

一、in的用法

<if test="batchNo != null  and batchNo != ''">
    and batch_No in  (${batchNo})
</if>

注意:

1.传入参数是实体类

2.注意是$不是#

事务层需要处理一下传过来的值(样式:a|b),处理成'a','b'

二、foreach的使用

1.mapper.xml

代码如下(示例):

 <if test="batchNo != null  and batchNo != ''">
    and batch_No =  #{batchNo,jdbcType=VARCHAR}
</if>
<if test="batchNoList != null   ">
    and batch_No in
    <foreach collection = "batchNoList"  index="index" item="item_batchNo" open="(" close=")"
             separator  = "," >
        #{item_batchNo,jdbcType=VARCHAR}
    </foreach>
</if>

注意:

1.batchNoList类型是List,在实体类新建的。

2.item内容是自定义的名称

3.传入参数是实体类

2.事务层

 事务层需要处理一下传过来的值(样式:a|b),处理成List

代码如下(示例):

if(!"".equals(dto.getBatchNo())||dto.getBatchNo().indexOf("|") !=-1){
    List<String> result2 = Splitter.on("|").trimResults().splitToList(dto.getBatchNo());

    dto.setBatchNoList(result2); 
    dto.setBatchNo(""); 
}


总结

这俩方式哪个更快,主观上看不出来,欢迎指正讨论。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值