<selectid="queryAllWebZtlcProvateequity"resultMap="BaseResultMap"parameterType="hashmap">
select * from web_ztlc_provateequity
<where><iftest="columnMap != null and columnMap !=''"><foreachitem="item"collection="columnMap.entrySet()"index="key">
and ${key} in
<foreachitem="value"collection="item"open="("close=")"separator=",">
#{value}
</foreach></foreach></if></where></select>
foreach标签说明
collection:需要遍历的对象,以上代码可以看出我写的是collection="columnMap.entrySet()",columnMap是我封装的Map对象,而entrySet()则是Map的内置方法,存储的是Map中的键值对集合,此时第一个foreach就是在遍历Map中的key。
item:遍历时每个元素遍历出来时的别名,这个别名有用,我们第二次foreach是会用到,因为第一次foreach的是key集合,那么第二次foreach时就得遍历key对应的value集合。
index:表示索引,也就是遍历集合中的数组下标,0,1,2,3......等,可以看出这里我填写的标签属性是index="key",下面and拼接时取得就是$key这个变量and ${key} in
open:in语句循环开始的符号,我们知道sql中in后面的条件是用()括起来的,所以这里我们填写的属性是open="("
close:in语句循环结束的符号,同上,有开始就有结束,所以这里我们填写的属性是close=")"
separator:多个条件拼接时的分隔符,我们知道in语句中会有多个条件即in(1,2,3,4)而多个条件使用逗号分割,所以这里我们填写的属性是separator=","