今天处理一个需求,选中北京三城一副一区,要查到"海淀区,怀柔区,昌平区,大兴区,通州区"三个区的数据
思路:由于地址并没有分区,只是一个字符串,所以把 "海淀区,怀柔区,昌平区,大兴区,通州区" 拼接为多个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>