首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Ibatis中#跟$两个符号的使用区别

2012-09-18 
Ibatis中#和$两个符号的使用区别Ibatis中#和$两个符号的使用区别一般在Ibatis的动态SQL部分,使用例如#id#,

Ibatis中#和$两个符号的使用区别
Ibatis中#和$两个符号的使用区别
一般在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>

热点排行