`
xulongfa
  • 浏览: 70936 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ibatis Tips 之 动态SQL查询

阅读更多

映射文件:

<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动态SQL标签用法

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

    iBatis的动态SQL语句

    ### iBatis中的动态SQL语句详解 ...同时,动态SQL的使用也使得iBatis成为处理复杂数据查询的理想选择之一。希望本文能帮助开发者更好地理解和掌握iBatis框架中的动态SQL技术,从而提升开发效率和项目质量。

    ibatis的dynamicSQL中,关于prepend的使用

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

    iBatis.net使用动态sql语句

    因为要下载其它的文件,所以从网站复制了一些其它的资源进行上传。但是这个资源是相当有用的。这里感谢之前总结相关技术的人员。谢谢

    在ibatis日志信息中打印SQL语句的方法(个人总结)

    在使用iBatis(现为MyBatis)作为持久层框架进行开发时,有时我们需要调试SQL语句,以便查看执行的SQL、优化性能或者解决查询问题。本文将详细讲解如何在iBatis日志信息中打印SQL语句,以便更好地理解和优化数据库...

    ibatis 开发指南 和 iBATIS-SqlMaps两本图书

    5. **动态SQL**:讲解如何使用iBATIS的动态元素来构建灵活的SQL语句,以应对复杂的查询需求。 6. **API使用**:介绍SqlSession、SqlSessionFactory、Executor等关键接口和类的使用方法。 7. **缓存机制**:解释...

    转ibatis动态sql - phoebus0501 - 博客园.mht

    转ibatis动态sql - phoebus0501 - 博客园.mht

    ibatis sql生成工具

    此外,该工具可能还包含了对复杂的查询条件的支持,比如模糊搜索、分页查询等,这些在生成的SQL中会以动态SQL的形式出现,使得代码更加简洁和易于维护。对于大型项目而言,这种自动化生成的功能能够显著减少编码时间...

    ibatis_动态查询条件

    iBatis 是一个基于 Java 的持久层框架,它提供了动态查询条件的功能,可以根据不同的条件生成不同的 SQL 语句。在 iBatis 中,动态查询条件是通过 `&lt;dynamic&gt;` 元素来实现的,该元素可以根据参数的值来生成不同的 ...

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

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

    查看ibatis后台sql

    通过java程序查看ibatis配置文件中的sql语句(注:无法查看变量值)

    ibatis_3.0_Dynamic_Sql_设计解析(并与2.x的差异)

    Dynamic Sql是指在运行时动态构建SQL语句的能力,这种能力对于处理复杂的查询或根据不同的业务逻辑生成不同的SQL语句非常有用。ibatis框架自2.x版本起就提供了Dynamic Sql的支持,但在3.0版本中,这一功能得到了极大...

    ibatis常用sql语句

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

    ibatis16个常用sql语句

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

    Ibatis常用sql语句

    Ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀持久层框架。Ibatis可以让你直接编写原生态SQL,可以严格控制SQL执行性能,灵活度极高,尤其适合对SQL有特殊需求的项目。 ### SQL语句详解 #### 1. 删除...

    ibatis打印sql

    iBATIS支持动态SQL,即在运行时根据条件构建SQL。通过打印SQL,可以验证动态条件是否正确地被插入到最终执行的SQL中。 5. **性能优化**: 打印SQL还能帮助优化数据库查询性能。通过分析SQL语句,可以识别慢查询并...

    打log4j日志-ibatis的sql输出

    对于Ibatis,这是一个轻量级的持久层框架,它将SQL语句与Java代码分离,提供了动态SQL的能力。在默认情况下,Ibatis并不会自动打印执行的SQL语句,但通过配置,我们可以使Ibatis在运行时输出SQL,这对于调试和性能...

    Ibatis查询Id列表.doc

    根据提供的文档信息,我们可以深入探讨Ibatis框架中的一个具体应用场景:如何通过动态SQL查询特定条件下的ID列表。本文将从以下几个方面进行详细解析: ### 一、Ibatis简介 Ibatis是一个基于Java的持久层框架,它...

    动态ibatis查询语句配置

    动态查询语句配置是Ibatis的一个重要特性,它允许我们在运行时根据业务需求构建灵活多变的SQL语句。这篇博文主要探讨的是如何在Ibatis中设置和使用动态SQL,以便实现更高效、更灵活的数据查询。 首先,我们需要理解...

Global site tag (gtag.js) - Google Analytics