注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

断尘居

温柔的男人像海洋。

 
 
 
 
 

日志

 
 

ibatis动态sql  

2011-01-09 05:52:45|  分类: SSH |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

动态标签分类:1<dynamic>,2 二元标签,3 一元标签,4 <iterate>
这四种标签以及他们的子标签具有共同的属性prepend,open,close
1 <dynamic>

Xml代码
  1. <statement id="dynamicGetAccountList" resultMap="account-result">  
  2.          select * from ACCOUNT   
  3.         <dynamic prepend="WHERE">  
  4.             <isNotNull prepend="AND" property="firstName">  
  5.                
  6. <!--              生成的语句不会有多余and,因为dynamic有一个隐含的属性,   
  7. removeFirstPrepend="true",所有一般都要写上perpend="and",需要的时候他会自动去掉-->  
  8.                  (ACC_FIRST_NAME = #firstName#   
  9.                 <isNotNull prepend="OR" property="lastName">  
  10.                     ACC_LAST_NAME = #lastName#   
  11.                 </isNotNull>  
  12.                  )   
  13.             </isNotNull>  
  14.             <isNotNull prepend="AND" property="emailAddress">  
  15.                  ACC_EMAIL like #emailAddress#   
  16.             </isNotNull>  
  17.             <!-- <isNotEmpty property="firstName" prepend="and" open="(" close=")" > firstName=#firstName# </isNotEmpty> -->  
  18.             <isGreaterThan prepend="AND" property="id"  
  19.                 compareValue="0">  
  20. <!--              //如果参数id的值大于给定的比较值(0),那么加上下面的语句(and acc_id=#id#) ACC_ID-->  
  21.                  = #id#   
  22.             </isGreaterThan>  
  23.         </dynamic>  
  24.          order by ACC_LAST_NAME   
  25.     </statement>  
<statement id="dynamicGetAccountList" resultMap="account-result">
  select * from ACCOUNT
  <dynamic prepend="WHERE">
   <isNotNull prepend="AND" property="firstName">
   
<!--    生成的语句不会有多余and,因为dynamic有一个隐含的属性,
removeFirstPrepend="true",所有一般都要写上perpend="and",需要的时候他会自动去掉-->
    (ACC_FIRST_NAME = #firstName#
    <isNotNull prepend="OR" property="lastName">
     ACC_LAST_NAME = #lastName#
    </isNotNull>
    )
   </isNotNull>
   <isNotNull prepend="AND" property="emailAddress">
    ACC_EMAIL like #emailAddress#
   </isNotNull>
   <!-- <isNotEmpty property="firstName" prepend="and" open="(" close=")" > firstName=#firstName# </isNotEmpty> -->
   <isGreaterThan prepend="AND" property="id"
    compareValue="0">
<!--    //如果参数id的值大于给定的比较值(0),那么加上下面的语句(and acc_id=#id#) ACC_ID-->
    = #id#
   </isGreaterThan>
  </dynamic>
  order by ACC_LAST_NAME
 </statement>


一元条件元素的属性:
prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
    property - 被比较的属性(必选)

<isPropertyAvailable> 检查是否存在该属性(存在parameter bean的属性)。   
<isNotPropertyAvailable> 检查是否不存在该属性(不存在parameter bean的属性)。   
<isNull> 检查属性是否为null。   
<isNotNull> 检查属性是否不为null。   
<isEmpty> 检查Collection.size()的值,属性的String或String.valueOf()值,是否为null或空(“”或size() < 1)。   
<isNotEmpty> 检查Collection.size()的值,属性的String或String.valueOf()值,是否不为null或不为空(“”或size() > 0)。
例子:
<isNotEmpty prepend=”AND” property=”firstName” >
FIRST_NAME=#firstName#
</isNotEmpty>

二元条件元素的属性: 二元是两个对象进行比较
prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
property - 被比较的属性(必选)
compareProperty - 另一个用于和前者比较的属性(必选或选择compareValue)
    compareValue - 用于比较的值(必选或选择compareProperty)

<isEqual> 比较属性值和静态值或另一个属性值是否相等。   
<isNotEqual> 比较属性值和静态值或另一个属性值是否不相等。    
<isGreaterThan> 比较属性值是否大于静态值或另一个属性值。   
<isGreaterEqual> 比较属性值是否大于等于静态值或另一个属性值。   
<isLessThan> 比较属性值是否小于静态值或另一个属性值。    
<isLessEqual> 比较属性值是否小于等于静态值或另一个属性值。
例子:
<isLessEqual prepend=”AND” property=”age” compareValue=”18”>
ADOLESCENT = ‘TRUE’
</isLessEqual>

<iterate>:这属性遍历整个集合,并为List集合中的元素重复元素体的内容。
Iterate的属性:
prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
property - 类型为java.util.List的用于遍历的元素(必选)
open - 整个遍历内容体开始的字符串,用于定义括号(可选)
close -整个遍历内容体结束的字符串,用于定义括号(可选)
    conjunction - 每次遍历内容之间的字符串,用于定义AND或OR(可选)

<iterate prepend=”AND” property=”userNameList” open=”(” close=”)” conjunction=”OR”> username=#userNameList[]# </iterate> = and(username=name1 or username=name2...)


注意:使用<iterate>时,在List元素名后面包括方括号[]非常重要,方括号[]将对象标记为List,以防解析器简单地将List输出成String。
  评论这张
 
阅读(1672)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017