zoukankan      html  css  js  c++  java
  • 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>
     
     
    ibatis中的order by 参数配置问题

    今天在写项目的时候,碰到了这个问题,调试了半天都没搞定。最后把问题锁定到xml配置文件上:

    一般配置文件都这么写

    <select ...>

     select * from table where XXX = #valule# order by #value#

    </select>

    但是由于ibatis在将参数值映射到statement里面时,所以对于 #value# 会解释成 字符串 'value' ,于是我的代码就被解释成

    select * from table where XXX = 'valule' order by 'value'

    这样显然不对,所以得换个方法

    <select ...>select * from table where XXX = #valule# order by $value$</select>

    用$$来包含order by的参数,就OK了~因为$$内的value不会被解释成'value',而是直接原样翻译。


    总结:如果要考虑数据类型,用#;若是只考虑字符,则用$.

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/allenlinrui/archive/2011/05/18/6428392.aspx


  • 相关阅读:
    文本溢出隐藏与定位
    css基本属性 内边距 外边距及盒模型
    CSS基本属性2
    CSS基本属性
    CSS入门
    表格与表单
    列表与图片
    html标签类型
    HashMap和HashTable
    Map接口
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/2062135.html
Copyright © 2011-2022 走看看