`
lgzbj2006
  • 浏览: 28005 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多

动态标签分类:1<dynamic>,2 二元标签,3 一元标签,4 <iterate>
这四种标签以及他们的子标签具有共同的属性prepend,open,close
1 <dynamic>
Xml代码
<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的动态SQL语句

    ### iBatis中的动态SQL语句详解 #### 引言 在进行数据库操作时,我们经常需要根据不同的条件构建不同的SQL语句。这种需求在实际开发中极为常见,尤其是在处理复杂的查询逻辑时。iBatis(现在通常被称为MyBatis)...

    ibatis sql 语句的编写

    ibatis还支持动态SQL,允许根据不同的条件生成不同的SQL语句,这对于复杂的查询非常有用。 ##### 4.1 `if`标签 ```xml SELECT * FROM USERS != null"&gt; AND name = #{name} ``` 这里使用`&lt;if&gt;`标签来...

    ibatis常用sql语句

    iBATIS的核心功能在于其强大的SQL映射能力和动态SQL生成机制,这使得开发人员能够灵活地处理复杂的数据库交互需求。 ### 输入参数为单个值 在iBATIS中,当输入参数为单个值时,如示例中的`long`类型,可以使用`...

    ibatis sqlserver代码自动生成

    例如,利用Ibatis的动态SQL功能,可以轻松处理条件查询、分页等复杂场景。同时,SQLServer提供的存储过程和函数也可以通过Ibatis调用,提升数据库操作性能。 总的来说,通过理解Ibatis和SQLServer的结合,以及掌握...

    iBATIS SQL Maps指导

    SQL Map允许使用动态和静态SQL,支持参数绑定、事务管理等功能。这使得开发者能够充分利用SQL的强大功能,同时保持代码的整洁和可维护性。 总的来说,《iBATIS SQL Maps指导》旨在帮助Java开发者理解并掌握如何使用...

    ibatis UPDATE 动态XML与insert

    标题 "ibatis UPDATE 动态XML与insert" 涉及到的是MyBatis框架中对数据库数据进行更新(UPDATE)和插入(INSERT)操作的动态XML配置方式。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,...

    iBatis SQL Maps开发指南.pdf

    通过以上总结,可以看出iBatis SQL Maps是一个功能强大的框架,不仅支持灵活的SQL语句定制,还提供了丰富的配置选项和高级功能,如动态SQL、缓存机制等,使得开发者能够在保持高性能的同时,更加便捷地进行数据库...

    IBATIS SQL Maps开发指北

    IBATIS的动态SQL功能允许在运行时根据条件动态构建SQL语句,提高了SQL的灵活性和复用性。例如,`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;set&gt;`等标签可以用来构建条件语句。 **4. 分页查询** 在...

    ibatis的sql-map dtd

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。在Ibatis中,`sql-map`和`sql-map-config`是两个重要的XML配置文件,...

    ibatis SQL映射文件、DAO、model自动生成工具源码

    Ibatis 是一款轻量级的Java持久层框架,它提供了SQL映射文件和基于XML或注解的SQL语句配置,使得开发者可以更加灵活地控制SQL的编写,从而避免了传统的JDBC代码中的大量模板式代码。这个"ibatis SQL映射文件、DAO、...

    iBATIS-SqlMaps-2_cn.pdf

    6. **Dynamic SQL**:允许在XML映射文件中进行条件判断,动态生成SQL语句,提高了SQL的灵活性和复用性。 7. **Transactions**:SQL Maps支持声明式和编程式的事务管理,确保数据的一致性和完整性。 通过使用iBATIS...

    Mygeneration_1309_20081006—IBatis_SQL映射+实体模板

    IBatis.NET是SQL Map的一种实现,它是一个持久层框架,用于将SQL查询与.NET应用中的业务逻辑分离。 在Mygeneration_1309_20081006中,内置了IBatisObject模板,这是Mygeneration的一个重要功能。这个模板允许用户...

    ibatis-sqlmaps-2_cn

    此外,教程还会涵盖动态SQL,这是IBATIS的一大亮点,允许在运行时构建和修改SQL语句,提高了代码的复用性和可维护性。 在使用IBATIS的过程中,你可能会遇到参数映射和结果映射的问题。《ibatis-sqlmaps-2_cn》将...

    iBATIS-SqlMaps2入门代码文档

    ### iBATIS-SqlMaps2入门代码文档知识点详解 #### 一、简介 iBATIS-SqlMaps2是一款用于简化Java应用程序与数据库交互过程的框架。该框架通过配置文件定义了对象关系映射规则,使得开发者能够更加专注于业务逻辑而...

    iBATIS SQL Maps示例代码

    2. **动态SQL**:iBATIS支持动态SQL,这意味着可以在SQL语句中根据条件添加或删除部分。通过使用`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;set&gt;`, `&lt;trim&gt;`, `&lt;foreach&gt;`等元素,可以构建出高度...

    iBATIS SQL Maps開發指南(中文)

    3. `&lt;insert&gt;`元素:定义插入语句,可以包含动态SQL部分,允许根据Java对象的属性来决定SQL中的哪些部分应该插入。`useGeneratedKeys`属性可以用来获取数据库自动生成的主键值。 4. `&lt;update&gt;`元素:用于执行更新...

Global site tag (gtag.js) - Google Analytics