因为要做内容统计信息,就将要传入的参数放在一个Bean中去了,有一个字段为状态值,类型为List类型,但一直执行不成功,
最后发现的问题是 <![CDATA[ ]]>
用这个符号将foreach包含在内了,所以将foreach的双引号也给转议了。
<![CDATA[ ]]>
只能在需要转义的地方才使用,在逻辑处理位置是不能使用的。
table.xml代码如下
<select id="query" resultMap="BaseResultMapBySubscribe" parameterType="com.dao.tableDao">
<![CDATA[
select DATE_FORMAT(end_time,#{dateFromat}) as date, '0' as uncount, count(*) as count
from table
where 1 = 1 AND DATE_FORMAT(start_time,#{dateFromat})>=#{startDate} AND DATE_FORMAT(end_time,#{dateFromat}) <=#{endDate}
AND state IN
]]>
<foreach collection="subscribeStates" item="item" index="index" open="(" separator="," close=")" >
#{item}
</foreach>
<![CDATA[
group by DATE_FORMAT(end_time,#{dateFromat})
UNION ALL
select DATE_FORMAT(end_time,#{dateFromat}) as date, count(*) as uncount, '0' as count
from table
where DATE_FORMAT(start_time,#{dateFromat})>=#{startDate} and DATE_FORMAT(end_time,#{dateFromat}) <=#{endDate}
AND state IN
]]>
<foreach collection="unSubscribeStates" item="item" index="index" open="(" separator="," close=")" >
#{item}
</foreach>
<![CDATA[
group by DATE_FORMAT(end_time,#{dateFromat})
]]>
</select>