mybatis使用foreach的 separator="or" 失效问题
今天处理一个需求,选中北京三城一副一区,要查到"海淀区,怀柔区,昌平区,大兴区,通州区"三个区的数据
思路:由于地址并没有分区,只是一个字符串,所以把 "海淀区,怀柔区,昌平区,大兴区,通州区" 拼接为多个like
传参:"海淀区,怀柔区,昌平区,大兴区,通州区"
碰到问题:xml中foreach没有循环,separator="or"也失效
但是,问题解决了啊^_^,所以才来写文章的啊O(∩_∩)O哈哈~
解决过程:
处理为List<String>
失败:
select COUNT(b.`id`) num,b.`hymc` hymc from yjjc_zcxx b WHERE ( b.zcdz like %海淀区,怀柔区,昌平区,大兴区,通州区% ) group by b.hymc
处理为String[]
成功:
select COUNT(b.`id`) num,b.`hymc` hymc from yjjc_zcxx b WHERE ( b.zcdz like %海淀区% or b.zcdz like %怀柔区% or b.zcdz like %昌平区% or b.zcdz like %大兴区% or b.zcdz like %通州区% ) group by b.hymc
SQL:
<select id="getGkLxjgBar" resultType="org.jshy.modules.demo.yjjc.entity.YjjcZcxxQygk"> select COUNT(b.`id`) num,b.`hymc` hymc from yjjc_zcxx b <where> <if test="zzjgdm != null "> and b.zzjgdm=#{zzjgdm} </if> <if test="zcdzList != null "> <foreach collection="zcdzList" item="primaryKey" index="index" open="(" close=")" separator="or"> b.zcdz like <![CDATA[%${primaryKey}%]]> </foreach> </if> </where> group by b.hymc </select>