数据库用mysql
1,首先区分下#和$的区别:
#:自动类型匹配,常见类型int、string
$:一般两种用法,一种是匹配int类型的参数,一种是传入sql语句部分(所以有sql注入风险)
以下为几种经典用法:
①,in和or语句(如果建立索引,两者性能差不多;否则or语句性能大大降低):
<iterate property="itemIds" open="(" close=")" conjunction="or" prepend="and">
itemid = #itemIds[]#
</iterate>
// 解析为or语句
或:
itemid in
<iterate property="itemIds" open="(" close=")" conjunction=",">
#itemIds[]#
</iterate>
// 标准in语句
或: itemid in ($idsStr$)// 此处idsStr格式为1,2,3...
②比较大小的where语句(不仅仅是日期的比较,只要包含>、<、&号的语句都需要转义> < &,验证xml的合法性,不过用<![CDATA[ ]]>就不需要了。同时注意此符号的使用范围,避免包裹在标签语句之外):
<![CDATA[
and insert_date >= #startDate# and insert_date < date_add(#endDate#, INTERVAL 1 DAY)
]]>