insert into yourtable 
<dynamic prepend="(">
<isNotNull prepend="," property="logonName">
LOGON_NAME
</isNotNull>
</dynamic>
) values 
<dynamic prepend="(">
<isNotNull prepend="," property="logonName">
    #logonName#
</isNotNull>
</dynamic>
)

解决方案 »

  1.   

    <select id="getAppList" resultMap="AppsysResult" parameterClass="java.util.Map">
       <![CDATA[select  * from  (select myTable.*,rownum as rn from (select * from APP_SYS) myTable where rownum < #end#) where rn >= #start#]]>
    <!--这里的select语句是分页的,在java代码传入end,start参数-->
    <!--如果先不分页(select  * from 表名)就ok了 -->
       <dynamic prepend="WHERE">
         <isParameterPresent>
          <isPropertyAvailable property="sysId">
           <isNotNull prepend="AND" property="sysId">
             SYS_ID = #sysId#)
           </isNotNull>
          </isPropertyAvailable>
          <isPropertyAvailable property="userCode">
           <isNotNull prepend="AND" property="userCode">
             USER_CODE = #userCode#)
           </isNotNull>
          </isPropertyAvailable>
          <isPropertyAvailable property="server">
           <isNotNull prepend="AND" property="server">
             SERVER = #server#)
           </isNotNull>
          </isPropertyAvailable>
          <isPropertyAvailable property="dbName">
           <isNotNull prepend="AND" property="dbName">
             DB_NAME = #dbName#)
           </isNotNull>
         </isPropertyAvailable>
         </isParameterPresent>
        </dynamic>
      </select>
      

  2.   

    太复杂select * from mytalbe
    where $condition$这样似乎也可以
      

  3.   

    简单的动态SQL元素
    虽然动态Mapped Statement API功能强大,但有时仅需要一小部分的动态SQL即可。为此,SQL statement和statement都可以包含简单的动态SQL元素,以帮助实现动态的order by子句,动态的查询字段或SQL语句的其他动态部分。简单动态SQL元素的概念有点象inline parameter的映射,但使用了稍微不同的语法。考虑下面的例子:
    <statement id=”getProduct” resultMap=”get-product-result”>
    select * from PRODUCT order by $preferredOrder$
    </statement>
    上面的例子中,preferredOrder动态元素将被参数对象的preferredOrder属性值替换(象parameter map一样)。不同的是,它从根本上改变了SQL语句本身,比仅仅简单地改变参数值严重得多。在这样的动态SQL语句中,错误可能会引起安全,性能和稳定性的风险。因此,应细心检查,以确保简单动态SQL元素使用的正确。另外,还要留意您的设计,以防数据库细节对业务逻辑对象模型造成不好的影响。例如,您不应因为要使用order by子句,而将一个数据字段名作为业务对象的属性,或作为JSP页面的一个域的值。
    简单动态元素可以包含在<dynamic-mapped-statement>中,当要修改SQL语句本身时它开发指南 iBATIS SQL Maps Page 45 of 62
    能派上用场。例如:
    <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%’
    pass:找找这本书http://www.ibatis.com Clinton Begin 著 刘涛([email protected]) 译
    我也在学习用这个
      

  4.   

    <statement id=”getProduct” resultMap=”get-product-result”>
    SELECT * FROM PRODUCT
    <dynamic prepend=”WHERE”>
    <isNotEmpty property=”description”>
    PRD_DESCRIPTION $operator$ #description#
    </isNotEmpty>
    </dynamic>
    </statement>这个看的头疼, 貌似是不太好的发明