在复杂动态SQL语句(一般出现在<dynamic>,<isNotEmpty>标签中),区别如下:
##中的变量解析之后会被 '' 括起来,作为一个String,而$$中的变量会直接解析;
##:
<isNotEmpty prepend="and" property="fdate">
t.d_date = to_date(#fdate#, 'yyyy-mm-dd')
</isNotEmpty>
$$:
<isNotEmpty property="symbol" prepend=" and ">
t.s_symbol like '%$symbol$%'
</isNotEmpty>
order by
<isNotEmpty property="orderBy">$orderBy$,</isNotEmpty>
TDate desc
但是在包含iterate的动态语句,必须使用##,此时的##不会解析为String而是直接解析成变量。
<isNotEmpty prepend="and" property="fcodes">
B.F_CODE in
<iterate conjunction="," property="fcodes" open="(" close=")">
#fcodes[]#
</iterate>
</isNotEmpty>
转载请注明:观测者 » MyBatis ## 和 $$ 的区别