`
tsmood
  • 浏览: 43717 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Ibatis Dynamic 标签

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

1、<dynamic>
<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>
<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>

2、一元条件元素的属性:
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> 

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

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

4、<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。
分享到:
评论

相关推荐

    iBATIS动态标签

    `&lt;dynamic&gt;`标签是iBATIS动态标签的核心,它允许在其内部包含一系列的条件标签,根据不同的条件来决定哪些部分应该被插入到最终的SQL语句中。`&lt;dynamic&gt;`标签有三个主要属性: 1. `prepend`: 在动态内容前添加的字符...

    ibatis的dynamicSQL中,关于prepend的使用

    在ibatis中,`&lt;dynamic&gt;`标签是用来构建动态SQL的核心元素之一。当使用`&lt;dynamic&gt;`标签时,可以将一系列条件组合起来,根据参数的不同值来决定是否加入到最终的SQL语句中。例如,在给定的部分内容中,可以看到`...

    ibatis dynamic 用法

    本文将详细介绍 ibatis 中 Dynamic SQL 的使用方法,特别关注 `&lt;dynamic&gt;` 标签及其相关的子标签。 #### 二、Dynamic SQL 标签概述 Dynamic SQL 在 ibatis 中主要通过以下几种标签实现: 1. **`&lt;dynamic&gt;`**:用于...

    ibatis动态SQL标签用法

    iBatis动态SQL标签用法 iBatis是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成不同的SQL语句,从而提高查询效率和灵活性。 动态SQL片段 iBatis提供了动态SQL片段的功能,...

    ibatis

    标签 "教程" 指出这是一个学习资源,可能是书籍或在线课程,旨在帮助开发者掌握iBATIS的基本用法和高级技巧。 压缩包中的文件名揭示了更具体的学习内容: 1. **spring-reference_cn.pdf**:这可能是Spring框架的...

    ibatis2.X升级mybatis3.X之曲径通幽处

    例如,`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签的使用,让SQL语句可以根据条件动态生成,提高了代码的复用性和灵活性。 在映射器接口方面,Mybatis3.x允许开发者直接在接口方法上使用@Select、@Insert、...

    ibatis常用sql语句

    同时,为了避免数组为空或为null时引发的SQL语法错误,iBATIS还提供了`&lt;isNotNull&gt;`和`&lt;dynamic&gt;`标签进行条件判断,确保了代码的健壮性和安全性。 ### 传递参数只含有一个数组 最后,当参数只包含一个数组时,...

    ibatis出错调试心得

    - **自定义SQL片段**:通过`&lt;dynamic&gt;`标签,可以创建更为灵活的SQL片段。 ```xml &lt;dynamic&gt; $sql$ &lt;/dynamic&gt; ``` 其中`$sql$`表示直接插入SQL文本,需要注意这种用法的安全性问题,避免SQL注入攻击。 #...

    ibatis-2.3.

    5. **Dynamic SQL**: iBATIS 提供了动态 SQL 功能,允许在 SQL Map 文件中使用条件语句,如 `if`、`choose`、`when`、`otherwise` 等,根据输入参数的不同生成不同的 SQL 语句。 6. **Transaction Management**: ...

    ibatis的错误总结

    在深入探讨ibatis框架中可能遇到的错误时,我们首先需要理解ibatis(现被称为MyBatis)的基本概念。ibatis是一种优秀的持久层框架,它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。ibatis可以使用...

    Ibatis常用sql语句

    根据给定的文件信息,以下是对“Ibatis常用...Ibatis通过其动态SQL标签如`iterate`, `isNotNull`, `dynamic`等提供了极高的灵活性,能够有效应对复杂多变的业务需求。掌握这些基本用法对于提升Ibatis开发效率至关重要。

    iBATIS实战

    8.2.1 dynamic标签 134 8.2.2 二元标签 135 8.2.3 一元标签 136 8.2.4 参数标签 137 8.2.5 iterate标签 138 8.3 一个简单而完整的示例 139 8.3.1 定义如何检索和显示数据 140 8.3.2 确定将涉及哪些数据库结构 140 ...

    Ibatis复杂查询语句.doc

    - `&lt;dynamic&gt;`标签用于动态生成SQL语句的部分,它允许根据传入参数的值来决定是否包含某个条件。例如,`&lt;isNotEmpty&gt;`标签用于检查参数是否为空,如果非空,则将包含其后的SQL片段。 2. **子查询**: - 在这个...

    ibatis培训教程

    - 提供了多种标签如`if`、`choose`、`when`、`otherwise`等来构建动态SQL语句。 - 可以根据条件动态添加或删除SQL子句,提高查询的灵活性。 - **示例**: ```xml SELECT * FROM USER_ACCOUNT != null"&gt; AND...

    ibatis and和or联合查询 .doc

    利用 `&lt;dynamic&gt;` 标签和 `&lt;isNotEmpty&gt;`, `&lt;isNotNull&gt;` 等子标签,可以灵活地控制SQL语句的生成。这对于实现复杂的查询条件非常有用,特别是在处理大量参数和不确定条件的情况下。此外,通过设置 `open` 和 `close...

    ibatis的动态查询

    - `&lt;dynamic&gt;` 标签允许根据传入的参数动态生成 SQL 语句。 - 通过 `&lt;isNotNull&gt;`、`&lt;isGreaterThan&gt;`、`&lt;isLessThan&gt;` 等标签可以实现对条件的灵活控制。 2. **示例代码**: ```xml select id, note from ...

    ibatis高级特性

    iBATIS 提供了丰富的动态 SQL 功能,其中主要包括 `dynamic` 和二元标签: 1. **dynamic 标签** 动态标签允许在 SQL 语句中插入条件判断,通过 `open`, `close`, `prepend` 等属性控制动态内容的前后缀。 2. **...

    ibatis动态注入

    iBATIS动态SQL主要通过XML映射文件中的特定标签实现,允许我们根据业务需求动态地构建SQL语句。这些动态元素使得SQL语句可以根据传入的参数值动态地调整,避免了大量IF-ELSE语句或者字符串拼接,提高了代码的可读性...

Global site tag (gtag.js) - Google Analytics