ibatis的sql配置文件--条件元素。

来源:互联网 发布:眼镜哪个牌子好 知乎 编辑:程序博客网 时间:2024/05/09 00:44

转自:http://blog.csdn.net/winy_lm/article/details/48177137

ibatis--条件元素:


下面要讲的内容在日常工作中经常用到,而少有人真正明白为什么这么用,希望大家仔细学习,能够做到知其然知其所以然。

动态标签的作用是动态构建SQL语句,根据不同的一元或二元运算条件构建复杂的SQL语句,
省去了IF-ELSE条件语句和一连串的字符串连接。


先看一个动态SQL的例子:

        


上面的例子中,<dynamic>元素划分出SQL语句的动态部分。动态部分可以包含任意多的条件元素,条件元素决定是否在语句中包含其中的SQL代码。


 Ibatis中,条件元素包含以下几种:二元条件、一元条件和其他条件元素:


1)    二元条件元素:将一个属性值和静态值或另一个属性值比较,如果条件为真,元素将被包容在查询SQL语句中。


       二元条件元素的属性:

     perpend——可被覆盖的SQL语句组成部分,添加在语句的前面(可选)

     property——是比较的属性(必选)

     compareProperty——另一个用于和前者比较的属性(必选或选择compareValue)

     compareValue——用于比较的值(必选或选择compareProperty)

<isEqual>

比较属性值和静态值或另一个属性值是否相等。

<isNotEqual>

比较属性值和静态值或另一个属性值是否不相等。

<isGreaterThan>

比较属性值是否大于静态值或另一个属性值。

 <isGreaterEqual>

比较属性值是否大于等于静态值或另一个属性值。

<isLessThan>

 比较属性值是否小于静态值或另一个属性值。

<isLessEqual>

 比较属性值是否小于等于静态值或另一个属性值。


举个小例子:如果小于等18岁时,则为成年人


<isLessEqual prepend=”AND” property=”age” compareValue=”18”>
          ADOLESCENT = ‘TRUE’
</isLessEqual>


2)  一元条件元素:一元条件元素检查属性的状态是否符合特定的条件。


一元条件元素的属性:

     prepend——可被覆盖的SQL语句组成部分,添加在语句前面(可选)

     property——被比较的属性(必选)

<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>



3)  其他元素条件

a)        Parameter Present:这些元素检查参数对象是否存在

   prepend -可被覆盖的SQL语句组成部分,添加在语句的前面(可选)

 <isParameterPresent>

 检查是否存在参数对象(不为null)

 <isNotParameterPresent>

例子:
<isNotParameterPresent prepend=”AND”>
    EMPLOYEE_TYPE = ‘DEFAULT’
</isNotParameterPresent>

b)        Iterate:这属性遍历整个集合,并为List集合中的元素重复元素体的内容。

Iterate的属性:

     prepend -可被覆盖的SQL语句组成部分,添加在语句的前面(可选)

     property -类型为java.util.List的用于遍历的元素(必选)

     open -整个遍历内容体开始的字符串,用于定义括号(可选)

     close -整个遍历内容体结束的字符串,用于定义括号(可选)

     conjunction -每次遍历内容之间的字符串,用于定义AND或OR(可选)

<iterate>  

遍历类型为java.util.List的元素。


例子:
  <iterate prepend="AND"  property="userNameList"       open="(" close=")" conjunction="OR">
      username=#userNameList[]#
  </iterate>


  注意:使用<iterate>时,在List元素名后面包括方括号[]十分重要,方括号[]将对象标记为List,不写[]则会解析成String。

     

上面介绍了ibatis动态SQL的标签,不能一一对上面的标签进行举例,在日常工作中能够熟练掌握。


0 0
原创粉丝点击