最新消息:

MyBatis ## 和 $$ 的区别

Java 观测者 2399浏览

在复杂动态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 ## 和 $$ 的区别