iBatis中使用动态查询

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                 

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
>

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值