`
sbpya
  • 浏览: 610010 次
  • 性别: Icon_minigender_1
  • 来自: 杭州,长沙
社区版块
存档分类
最新评论

ibatis动态嵌套查询sql

阅读更多

在动态映射的where部分.有如下嵌套的动态条件

1、如果 a,b,c都不为空的情况下
where a = 1 and ( b=2 or c= 3)

2、如果 a为空,b,c不为空
where  b=2 or c= 3

3、如果b,c其中一个为空

where a = 1 and b=2

 

 

解决方案如下:

 

where 1=1

<dynamic prepend="and" open="(" close=")">
            <isNotEmpty prepend="and" property="a">

                   a = #a#
            </isNotEmpty>
            <isNotEmpty prepend="or" property="b" removeFirstPrepend="true">

                   b = #b#
             </isNotEmpty>
            <isNotEmpty prepend="or" property="c" removeFirstPrepend="true">

                   c = #c#
             </isNotEmpty>
        </dynamic>

以上代码经本人测试通过!

分享到:
评论
2 楼 lipeixin 2011-01-18  
你这个实现是不是有问题啊
应该这样写:

where 1=1
<isNotEmpty prepend="and" property="a">
    a = #a#
</isNotEmpty>
<dynamic prepend="and" open="(" close=")">
   <isNotEmpty prepend="or" property="b" removeFirstPrepend="true">
        b = #b#
   </isNotEmpty>
   <isNotEmpty prepend="or" property="c" removeFirstPrepend="true">
        c = #c#
   </isNotEmpty>
</dynamic>

而且removeFirstPrepend="true"这个参数也没有什么太大用.
1 楼 25707332 2010-10-11  

相关推荐

    iBATIS-SqlMaps,ibatis映射文件

    例如,元素用于定义一个查询,它可以包含静态SQL语句,也可以使用动态SQL来适应不同条件的查询。元素用来执行插入操作,用于更新,而用于删除。在这些元素中,你可以通过来定义输入参数,通过来定义结果集的映射规则...

    iBATIS-SqlMaps

    为了提高SQL语句的灵活性,iBATIS-SqlMaps还支持动态SQL功能,允许在运行时构建SQL语句。主要包括以下元素: - **二元条件元素**:根据条件选择性地包含SQL片段。 - **一元条件元素**:用于控制SQL片段的整体开关。...

    ibatis 文档查询

    iBATIS不仅限于查询,还支持插入、更新、删除等SQL语句的执行。同时,可以通过配置文件进行DDL操作,例如创建、修改或删除数据库表结构。 6. **处理极大的数据集** 对于大规模数据的处理,iBATIS提供了分页查询、...

    Ibatis的简单例子(增删改查,联合查询等)

    Ibatis支持嵌套查询和联合查询。在XML映射文件中,你可以使用标签或在标签内直接编写JOIN语句,以实现多个表的数据联合查询。记得在Mapper接口中定义对应的方法。 6. **Service层和DAO层**: 在实际项目中,我们...

    SQL&Ibatis学习 ppt

    3. 高级SQL:掌握复杂的查询技巧,如嵌套查询、集合操作(UNION、INTERSECT、EXCEPT)、自连接、窗口函数等。了解存储过程和触发器的使用,以及事务处理(ACID属性)和并发控制。 4. 视图和索引:理解视图的概念,...

    ibatis-2.3.4.726.jar,ibatis-2.3.0.677.jar,ibatis-2.3.3.720.jar下载

    2. **动态SQL**:iBATIS支持在SQL Map中编写动态SQL,这意味着你可以根据条件在运行时构建SQL语句,提高了代码的可复用性和灵活性。 3. **结果映射**:iBATIS能够自动将数据库查询的结果映射到Java对象,减少了手动...

    ibatis 开发指南

    ibatis支持动态SQL语句的生成,允许在运行时根据条件动态构建SQL语句,提高了查询的灵活性。 #### 四、ibatis的高级特性 ##### 1. 事务管理 - **基于JDBC的事务管理机制**:直接使用JDBC的事务控制,适用于简单的...

    iBATIS SQLMap

    - SQL动态执行:iBATIS支持动态SQL,可以根据条件动态生成SQL语句,极大地提高了代码的可读性和复用性。 - 参数映射:自动将Java对象的属性值映射到SQL语句的参数,反之亦然,简化了数据转换的过程。 - 结果映射...

    ibatis 框架原理实现

    开发者可以自由编写SQL,包括动态SQL,以满足复杂查询需求。动态SQL允许根据条件拼接SQL,提高代码可读性和灵活性,例如使用`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`等标签。 3. **参数映射**: 参数映射是指...

    ibatis资料大全

    - **动态映射**:支持在运行时动态构建SQL语句,提高了代码的灵活性。 - **事务管理**: - **基于JDBC的事务管理机制**:使用标准的JDBC事务管理方式,简单易用。 - **基于JTA的事务管理机制**:适用于分布式环境...

    ibatis帮助文档

    1. **灵活的SQL**: Ibatis 支持动态SQL,开发者可以在XML映射文件中自由地编写SQL,无需受限于预编译的SQL语句。 2. **减少代码量**: 通过将SQL语句和Java代码分离,Ibatis 减少了大量重复的JDBC代码,提高了开发...

    Ibatis所有的包

    6. ResultMap结果映射:ResultMap用于处理查询结果到Java对象的映射,它可以定义复杂的结果映射规则,如关联、嵌套查询等,使得数据的转换更为灵活。 在提供的文件列表中,"ibatis-2.3.0.677"是Ibatis的一个旧版本...

    对IBatis分页的改进,使ibatis支持hibernate式的物理分页

    公司的大部分项目都开始使用IBatis作为O/R Mapping了,但是在使用的过程中也发现了很多不方便和存在争议的地方,其中一个不方便的地方就是分页,目前的处理方式都是在sqlMap中写针对特定数据库的物理分页Sql语句,对于...

    iBatis.rar 开发文档

    这些文档涵盖了iBatis的基本概念、安装配置、映射文件的编写、事务管理、动态SQL以及高级特性等多个方面,是学习和掌握iBatis的宝贵资源。 1. **iBATIS-SqlMaps-2_cn.pdf**:这份文档详细介绍了iBatis 2版本的核心...

    iBatis文档\ibatis.doc

    iBatis 是一款轻量级的Java持久层框架,它主要负责将数据库操作与业务逻辑解耦,使得开发者可以更加专注于SQL和业务代码的编写。本文档将详细讲解iBatis的核心概念、快速入门以及高级特性。 ### iBatis 快速启动 #...

    Ibatis高级使用讲解

    Ibatis的动态查询支持更复杂的表达式,比如你可以使用嵌套的判定节点来构造更复杂的逻辑。例如: ```xml ( name=#{name} AND age=#{age} ) ``` 这段代码会在`name`属性非空的情况下添加条件,如果`age`也...

    一个程序员的自省 iBATIS In Action:什么是iBATIS(一)

    例如,它可以处理多表查询、自定义类型映射、嵌套结果集等复杂情况。这些特性将在后续的章节中进一步探讨。 总的来说,iBATIS作为一个data mapper,它的核心价值在于提供了一个灵活且独立于数据库和对象模型的SQL...

Global site tag (gtag.js) - Google Analytics