iBatis中的動態查詢

如果想深入學習,可以參考 Manning.                  iBATIS.in.Action.Jan.2007               
下面給出幾個例子和dtd定義:               
<                  selectid="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                 
   <                  dynamicprepend="and"                  open="(" close=")">                    
    <                  isNotNullproperty="ki.userId" prepend="and" removeFirstPrepend="false">                 
     USER_ID = #ki.userId#                 
    </                  isNotNull>                 
    <                  isNotNullproperty="kfi.initiator"                  prepend="and">                 
     INITIATOR = #kfi.initiator#                 
    </                  isNotNull>                 
    <                  isNotNullproperty="kfi.initDate"                  prepend="and">                 
     INIT_DATE = #kfi.initDate#                 
    </                  isNotNull>                 
   </                  dynamic>                 
< /select>               
                
<                  updateid="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>               
                



屬性關鍵字                                                 
                             含義                     

<isEqual>                                                 
如果參數相等於值                             則查詢條件有效。                     

<isNotEqual>                                                 
如果參數不等於值則查詢條件有效。                     

<isGreaterThan>                                                 
如果參數大於值則查詢條件有效。                     

<isGreaterEqual>                                                 
如果參數等於值則查詢條件有效。                     

<isLessEqual>                                                 
如果參數小於值則查詢條件有效。如下所示:                         
<isLessEqual prepend = ”AND” property = ”age” compareValue = ”18” >                         
ADOLESCENT = ‘TRUE’                         
</isLessEqual>                     

                            < isPropertyAvailable>                                                 
如果參數有使用則查詢條件有效。                     

<isNotPropertyAvailable>                                                 
如果參數沒有使用則查詢條件有效。                     

<isNull>                                                 
如果參數爲NULL則查詢條件有效。                     

<isNotNull>                                                 
如果參數不爲NULL則查詢條件有效。                     

<isEmpty>                                                 
如果參數爲空則查詢條件有效。                     

<isNotEmpty>                                                 
如果參數不爲空則查詢條件有效                             。參數的數據類型爲                            Collection                            、                            String                            時參數不爲                            NULL                            或“”。如下所示:                         
<isNotEmpty prepend=”AND” property=”firstName” >                         
FIRST_NAME=#firstName#                         
                            < /isNotEmpty>                     

                                                          < isParameterPresent>                                                 
如果參數類不爲NULL                            則查詢條件有效。                     

<isNotParameterPresent>                                                 
                             Checks to see if the parameter object is not present (null). Example Usage:                         
                            < isNotParameterPresent prepend=”AND”>                         
EMPLOYEE_TYPE = ‘DEFAULT’                         
</isNotParameterPresent>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章