`

ibatis 之 动态SQL查询(dynamic )

阅读更多

映射文件:

 

<select id="getProductDynamic2" resultMap="get-product-result" parameterClass="product">
			<![CDATA[
				select * from t_product
			]]>	
				<dynamic prepend="WHERE">
					<isNotNull prepend="AND" property="price">
						prd_price=#price#
					</isNotNull>
					<isNotEmpty prepend="AND" property="description">
						prd_description=#description#
					</isNotEmpty>
				</dynamic>
				
		</select>

 

 注意:CDATA不应包括<dynamic>节点,否则标签不起作用!

DAO层:

  

public List getProductDynamic2(Product product) throws SQLException {
		init();
		List list = (List)sqlMapClient.queryForList("getProductDynamic2", product);
		return list;
	}

 

TEST类:

  

public void getProductDynamic2() throws SQLException {
		Product product = new Product();
		product.setPrice(206.99d);
		product.setDescription("basketball");
		List list1 = productDao.getProductDynamic2(product);
		for(Iterator it=list1.iterator(); it.hasNext();) {
			Product prd = (Product)it.next();
			System.out.println(prd);
		}
		
		
		/**
		 * 注意:product2里的price(是double型,不是Double型)的值没有设置,所以默认为初始化时的值(0),而不是NULL,
		   传入到sqlmap映射文件时,被包装成Double类型(ibatis中传入参数的都是引用类型),值为0,
		   这对statement里的动态语句有影响!
		 */
		Product product2 = new Product();
		product2.setDescription("basketball");
		List list2 = productDao.getProductDynamic2(product2);
		for(Iterator it=list1.iterator(); it.hasNext();) {
			Product prd = (Product)it.next();
			System.out.println(prd);
		}
	}

 

一元判定 是针对属性值本身的判定,如属性是否为NULL,是否为空值等。

<isEmpty>
检查Collection.size()的值,属性的String或String.valueOf()值,是否为null或空(“”或size() < 1)。

二元判定 有两个判定参数,一是属性名,而是判定值,如

  

<isGreaterThan prepend="AND" property="age" compareValue="18">
        (age=#age#)
</isGreaterThan>

 

 

 

 

分享到:
评论

相关推荐

    ibatis的dynamicSQL中,关于prepend的使用

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

    ibatis动态SQL标签用法

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

    ibatis_动态查询条件

    在 iBatis 中,动态查询条件是通过 `&lt;dynamic&gt;` 元素来实现的,该元素可以根据参数的值来生成不同的 SQL 语句。 在 iBatis 中,参数可以是基本类型、字符串、集合等,它们可以通过 `#` symbols 来传递给 SQL 语句。...

    ibatis常用sql语句

    iBATIS是早期流行的Java持久层框架之一,它通过SQL映射文件将SQL语句与Java对象关联起来,实现数据的持久化操作。iBATIS的核心功能在于其强大的SQL映射能力和动态SQL生成机制,这使得开发人员能够灵活地处理复杂的...

    ibatis的动态查询

    ### ibatis的动态查询知识点详解 #### 一、模糊查询 **知识点1:** 在进行模糊查询时,ibatis支持两种不同的语法标记:`#` 和 `$`。 1. **使用 `$value$` 进行模糊查询:** - 在进行模糊查询时,使用 `$value$` ...

    iBATIS动态标签

    iBATIS动态标签是SQL映射文件中的一种功能强大的特性,它允许在SQL语句中进行条件判断,根据传入的参数动态生成合适的查询条件。动态标签主要用于提高灵活性,使得SQL映射文件能够适应多种查询场景,而无需为每种...

    Ibatis常用sql语句

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

    iBATIS-SqlMaps-2_cn.pdf

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

    ibatis中使用安全的拼接语句,动态查询,大于、小于、等于.doc

    iBatis 中的动态查询可以根据参数的值动态地生成 SQL 语句,实现了高效的查询功能。例如,在上面的示例代码中,我们使用 `&lt;select&gt;` 元素来定义查询语句,使用 `&lt;dynamic&gt;` 元素来定义动态 SQL 语句。 在动态 SQL ...

    ibatis_3.0_Dynamic_Sql_设计解析

    ibatis,ibatis,ibatis,ibatis,ibatis

    IBATIS动态查询语句.doc

    在IT领域的数据库操作中,IBATIS框架提供了一种强大且灵活的方式来进行SQL查询,尤其在动态查询方面表现得尤为突出。本文将深入探讨IBATIS动态查询语句的运用,解析其背后的逻辑与机制,以及如何利用这些特性来增强...

    ibatis16个常用sql语句

    iBatis 16个常用SQL语句 iBatis是一个基于Java的持久层框架,提供了一个简洁的方式来访问和操作数据库。在iBatis中,SQL语句是...iBatis提供了一个灵活的方式来配置SQL语句,支持各种类型的输入参数和复杂的查询语句。

    Ibatis复杂查询语句.doc

    总结起来,这个Ibatis查询语句充分展示了Ibatis处理复杂查询的能力,包括动态SQL、子查询、多表联接、条件判断、数据类型映射和迭代处理等功能。在实际开发中,这种灵活性使得Ibatis能够适应各种复杂的业务场景,...

    ibatis and和or联合查询 .doc

    在ibatis中,实现复杂的`AND` 和 `OR` 联合查询可以通过动态SQL来完成。动态SQL允许在运行时动态地构建SQL语句,从而实现更加灵活的查询功能。 #### 四、示例解析 根据提供的部分代码,我们可以详细分析如何在...

    Ibatis查询语句里,可以使用多表查询

    iBatis 的核心功能包括 SQL 映射、动态 SQL 生成等,它通过配置文件或者注解的形式来实现 SQL 语句与 Java 代码之间的映射关系。 #### 二、多表查询概述 在实际应用中,经常需要从多个表中获取数据,这被称为多表...

    ibatis动态注入

    在IT行业中,数据库操作是应用程序的核心部分,而处理动态SQL是一项常见的挑战。iBATIS,作为一款优秀的持久层框架,提供...iBATIS的动态注入功能是其在数据库操作中的强大优势,也是许多开发者选择它的主要原因之一。

    iBATIS SQL Maps

    5. **Dynamic SQL**:iBATIS的动态SQL功能使得开发者能够在运行时根据条件构造SQL,避免了大量冗余的SQL语句,提高了代码的复用性。 6. **Transaction Management**:iBATIS支持JDBC和Spring两种事务管理方式,可以...

    ibatis 动态代理dtd

    根据提供的文件信息,我们可以深入探讨ibatis框架中的动态SQL元素及其使用方法。下面将详细介绍标题、描述以及部分内容中涉及的关键知识点。 ### ibatis 动态代理DTD #### 标题解释 - **ibatis**: 是一个开源的...

Global site tag (gtag.js) - Google Analytics