zoukankan      html  css  js  c++  java
  • iBatis中使用动态查询

    iBatis中的动态查询还是比较好用的

    如果想深入学习,可以参考 Manning.iBATIS.in.Action.Jan.2007

    下面给出几个例子和dtd定义:

    <select id="selectDispatchedKey" parameterClass="KeyAndKeyFlowInfo" resultMap="KeyAndKeyFlowResult">
       select distinct
        KEY_ID,
        USER_ID,
        INITIATOR,
        INIT_DATE,
        INITIATOR_EMAIL,
        SGS_KEY.BRANCH_NAME,
        APPROVER,
        APPROVER_EMAIL,
        APPROVE_DATE
       from
        SGS_KEY,
        SGS_KEY_FLOW
       where SGS_KEY.APPLY_FLOW_ID=SGS_KEY_FLOW.KEY_FLOW_ID
       <dynamic prepend="and" open="(" close=")">  
        <isNotNull property="ki.userId" prepend="and" removeFirstPrepend="false">
         USER_ID = #ki.userId#
        </isNotNull>
        <isNotNull property="kfi.initiator" prepend="and">
         INITIATOR = #kfi.initiator#
        </isNotNull>
        <isNotNull property="kfi.initDate" prepend="and">
         INIT_DATE = #kfi.initDate#
        </isNotNull>
       </dynamic>
    </select>


    <update id="updateKeyFlow" parameterClass="KeyFlowInfo">
       update SGS_KEY_FLOW set
       <dynamic>
         KEY_FLOW_ID =#keyFlowId#
        <isNotNull property="branchName" prepend=",">
         BRANCH_NAME = #branchName#
        </isNotNull>
        <isNotEqual property="operation" prepend="," compareProperty="operation" compareValue="0">
         OPERATION = #operation#
        </isNotEqual>
        <isNotNull property="initiator" prepend=",">
         INITIATOR = #initiator#
        </isNotNull>
        <isNotNull property="initiatorEmail" prepend=",">
         INITIATOR_EMAIL = #initiatorEmail#
        </isNotNull>
        <isNotNull property="initDate" prepend=",">
         INIT_DATE = #initDate#
        </isNotNull>
        <isNotNull property="approver" prepend=",">
         APPROVER = #approver#
        </isNotNull>
        <isNotNull property="approverEmail" prepend=",">
         APPROVER_EMAIL = #approverEmail#
        </isNotNull>
        <isNotNull property="approveDate" prepend=",">
         APPROVE_DATE = #approveDate#
        </isNotNull>
        <isNotEqual property="keyNum" prepend="," compareProperty="keyNum" compareValue="0">
         KEY_NUM = #keyNum#
        </isNotEqual>
        <isNotNull property="applyReason" prepend=",">
         APPLY_REASON = #applyReason#
        </isNotNull>
        <isNotNull property="rejectReason" prepend=",">
         REJECT_REASON = #rejectReason#
        </isNotNull>                       
       </dynamic>
       where
        KEY_FLOW_ID =#keyFlowId#
    </update>

    0:26 2008-2-20补充:

    让iBatis中的insert返回主键 [ibatis insert 返回 自增主键]

    iBatis SQL-map 文件书写注意事项

    http://ibatis.apache.org/dtd/sql-map-2.dtd 中有<dynamic>的定义

    <!-- - - - - - - - - - - - - - - - - - - - - - - - -
                     DYNAMIC ELEMENTS
    - - - - - - - - - - - - - - - - - - - - - - - - -->

    <!ELEMENT dynamic (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST dynamic
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    >

    <!ELEMENT isNotNull (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST isNotNull
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    property CDATA #IMPLIED
    removeFirstPrepend (true|false) #IMPLIED
    >

    <!ELEMENT isNull (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST isNull
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    property CDATA #IMPLIED
    removeFirstPrepend (true|false) #IMPLIED
    >

    <!ELEMENT isNotPropertyAvailable (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST isNotPropertyAvailable
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    property CDATA #REQUIRED
    removeFirstPrepend (true|false) #IMPLIED
    >

    <!ELEMENT isPropertyAvailable (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST isPropertyAvailable
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    property CDATA #REQUIRED
    removeFirstPrepend (true|false) #IMPLIED
    >

    <!ELEMENT isEqual (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST isEqual
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    property CDATA #IMPLIED
    removeFirstPrepend (true|false) #IMPLIED
    compareProperty CDATA #IMPLIED
    compareValue CDATA #IMPLIED
    >

    <!ELEMENT isNotEqual (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST isNotEqual
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    property CDATA #IMPLIED
    removeFirstPrepend (true|false) #IMPLIED
    compareProperty CDATA #IMPLIED
    compareValue CDATA #IMPLIED
    >

    <!ELEMENT isGreaterThan (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST isGreaterThan
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    property CDATA #IMPLIED
    removeFirstPrepend (true|false) #IMPLIED
    compareProperty CDATA #IMPLIED
    compareValue CDATA #IMPLIED
    >

    <!ELEMENT isGreaterEqual (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST isGreaterEqual
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    property CDATA #IMPLIED
    removeFirstPrepend (true|false) #IMPLIED
    compareProperty CDATA #IMPLIED
    compareValue CDATA #IMPLIED
    >

    <!ELEMENT isLessThan (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST isLessThan
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    property CDATA #IMPLIED
    removeFirstPrepend (true|false) #IMPLIED
    compareProperty CDATA #IMPLIED
    compareValue CDATA #IMPLIED
    >

    <!ELEMENT isLessEqual (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST isLessEqual
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    property CDATA #IMPLIED
    removeFirstPrepend (true|false) #IMPLIED
    compareProperty CDATA #IMPLIED
    compareValue CDATA #IMPLIED
    >

    <!ELEMENT isEmpty (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST isEmpty
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    property CDATA #IMPLIED
    removeFirstPrepend (true|false) #IMPLIED
    >

    <!ELEMENT isNotEmpty (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST isNotEmpty
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    property CDATA #IMPLIED
    removeFirstPrepend (true|false) #IMPLIED
    >

    <!ELEMENT isParameterPresent (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST isParameterPresent
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    removeFirstPrepend (true|false) #IMPLIED
    >

    <!ELEMENT isNotParameterPresent (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST isNotParameterPresent
    prepend CDATA #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    removeFirstPrepend (true|false) #IMPLIED
    >

    <!ELEMENT iterate (#PCDATA | include | iterate | isParameterPresent | isNotParameterPresent | isEmpty | isNotEmpty | isNotNull | isNull | isNotEqual | isEqual | isGreaterThan | isGreaterEqual | isLessThan | isLessEqual | isPropertyAvailable | isNotPropertyAvailable)*>
    <!ATTLIST iterate
    prepend CDATA #IMPLIED
    property CDATA #IMPLIED
    removeFirstPrepend (true|false|iterate) #IMPLIED
    open CDATA #IMPLIED
    close CDATA #IMPLIED
    conjunction CDATA #IMPLIED
    >

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/alex197963/archive/2008/11/27/3391551.aspx

  • 相关阅读:
    java基础02标识符
    java基础08自增、自减运算符 初识Math
    java基础04 数据类型扩展及面试题讲解
    java基础03数据类型
    大家好,近期学习设计模式,我会把自己的例子上传,以供大家参考
    关于寂寞
    从以文件流的形式下载文件
    大家好,我的程序博客开始了
    如何学好C语言
    大学生如何将自己从迷茫中解困
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/2052785.html
Copyright © 2011-2022 走看看