关于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("");
}
总结
这俩方式哪个更快,主观上看不出来,欢迎指正讨论。
文章介绍了在Mapper中处理SQL查询条件时,如何使用in和foreach标签。对于查询多个值,可以使用in配合foreach遍历List来实现,或者在条件中直接处理以竖线分隔的字符串。文章提到了传入参数通常是实体类,并且在事务层需要对传入的值进行处理,如将|分隔的字符串转换为List。最后,作者提出两者在性能上的差异主观上无法判断,欢迎讨论。
1282

被折叠的 条评论
为什么被折叠?



