一般在Ibatis的動態SQL部分,使用例如#id#,$id$這樣的格式,
1、在復雜動態SQL語句中,類似#field#,如果field變量值為id,則Ibatis會將#field#轉換為‘id’;
例如:<statement id ="getProduct" resultMap="get-product-result">
SELECT * FROM PRODUCT
<dynamic prepend="WHERE">
<isNotEmpty property="description">
PRD_DESCRIPTION $operator$ #description#
</isNotEmpty>
</dynamic>
</statement>
上面的例子中,參數對象的operator屬性將用于替換符號$operator$,假設operator屬性等于“like”,description屬性等于“%dog%”,生成的SQL語句如下,
SELECT * FROM PRODUCT WHERE PRD_DESCRIPTION
LIKE '%dog%'
在復雜動態SQL語句中(即語句中有<dynamic >,<isNotEmpty>等標簽,<iterate>標簽除外),##中的變量解析之后會被''括起來,作為一個String;
$$中的變量會直接解析;
2、在包含iterate的動態語句中,必須使用##,但是不會作為String來處理,而是直接解析變量,例如:
<update id="updateCDNSRVFileStatus" >
update #tableName# set STATUS = #status#
<isPropertyAvailable prepend="WHERE" property="videoFileIds" >
FILE_ID IN
<iterate property="videoFileIds" open="(" close=")" conjunction=",">
#videoFileIds[]#
</iterate>
</isPropertyAvailable>
</update>
開心過好每一天。。。。。