关于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(""); }
总结
这俩方式哪个更快,主观上看不出来,欢迎指正讨论。