iBatis中的動態(tài)查詢
下面給出幾個例子和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
?? <dynamicprepend="and" open="(" close=")">???
??? <isNotNull property="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>
<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>
屬性關(guān)鍵字 |
含義 |
<isEqual> |
如果參數(shù)相等于值 則查詢條件有效。 |
<isNotEqual> |
如果參數(shù)不等于值則查詢條件有效。 |
<isGreaterThan> |
如果參數(shù)大于值則查詢條件有效。 |
<isGreaterEqual> |
如果參數(shù)等于值則查詢條件有效。 |
<isLessEqual> |
如果參數(shù)小于值則查詢條件有效。如下所示: <isLessEqual prepend = ”AND” property = ”age” compareValue = ”18” > ADOLESCENT = ‘TRUE’ </isLessEqual> |
<isPropertyAvailable> |
如果參數(shù)有使用則查詢條件有效。 |
<isNotPropertyAvailable> |
如果參數(shù)沒有使用則查詢條件有效。 |
<isNull> |
如果參數(shù)為NULL則查詢條件有效。 |
<isNotNull> |
如果參數(shù)不為NULL則查詢條件有效。 |
<isEmpty> |
如果參數(shù)為空則查詢條件有效。 |
<isNotEmpty> |
如果參數(shù)不為空則查詢條件有效 。參數(shù)的數(shù)據(jù)類型為 Collection 、 String 時參數(shù)不為 NULL 或“”。如下所示: <isNotEmpty prepend=”AND” property=”firstName” > FIRST_NAME=#firstName# </isNotEmpty> |
<isParameterPresent> |
如果參數(shù)類不為NULL 則查詢條件有效。 |
<isNotParameterPresent> |
Checks to see if the parameter object is not present (null). Example Usage: <isNotParameterPresent prepend=”AND”> EMPLOYEE_TYPE = ‘DEFAULT’ </isNotParameterPresent> |
http://203.208.39.132/search?q=cache:c0ebNIxuwRsJ:blog.csdn.net/yangguoqi/archive/2009/04/25/4122824.aspx+isNotNull+removeFirstPrepend&cd=4&hl=zh-CN&ct=clnk&gl=cn&st_usg=ALhdy292qjrM9JyeUS1SW1kaFKLSpEs4-w
項目的例子:
? <statement id="[customerinfo-lookup]" parameterClass="java.util.Map" resultClass="java.util.HashMap">
??? <![CDATA[
?? SELECT A.ROW_ID s_CUSTOMER_ID,A.PERMIT_NO s_PERMIT_NO,A.CUSTOMER_DESC s_CUSTOMER_DESC,A.ADDR s_ADDR,
???? A.CUSTMGR_ID s_CUSTMGR_ID,B.EMPLOYEE_NAME s_CUSTMGR_NAME,A.MARKET_ORG s_MARKET_ORG,C.DEPT_NAME s_DEPT_NAME
????? FROM MD_CUSTOMER A LEFT JOIN MD_EMPLOYEE B ON A.CUSTMGR_ID=B.ROW_ID LEFT JOIN MD_DEPT C ON A.MARKET_ORG=C.ROW_ID
????? WHERE 1=1 AND A.STATUS='1'
??? ]]>
??? <isNotEmpty prepend="and" property="custmgrID">
????? <![CDATA[ A.CUSTMGR_ID=#custmgrID# ]]>
??? </isNotEmpty>
??? <isNotNull property="filter" removeFirstPrepend="true" prepend="AND" open="(" close=")">
?? <isNotEmpty prepend="OR" property="filter.m_PERMIT_NO">
???? <![CDATA[ A.PERMIT_NO LIKE '%$filter.m_PERMIT_NO$%' ]]>
?? </isNotEmpty>
?? <isNotEmpty prepend="OR" property="filter.m_CUSTOMER_DESC">
???? <![CDATA[ A.CUSTOMER_DESC LIKE '%$filter.m_CUSTOMER_DESC$%' ]]>
?? </isNotEmpty>
?? <isNotEmpty prepend="OR" property="filter.s_PLACE_NAME">
???? <![CDATA[ A.ADDR LIKE '%$filter.m_ADDR$%' ]]>
?? </isNotEmpty>
??? </isNotNull>
??? <isNotNull prepend="ORDER BY" property="sort"> <!--排序-->
????? $sort$
??? </isNotNull>
? </statement>
posted on 2010-01-22 15:30 飛熊 閱讀(1630) 評論(0) 編輯 收藏 所屬分類: Ibatis