映射文件:
<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中,`<dynamic>`标签是用来构建动态SQL的核心元素之一。当使用`<dynamic>`标签时,可以将一系列条件组合起来,根据参数的不同值来决定是否加入到最终的SQL语句中。例如,在给定的部分内容中,可以看到`...
iBatis是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成不同的SQL语句,从而提高查询效率和灵活性。 动态SQL片段 iBatis提供了动态SQL片段的功能,可以将SQL语句拆分成小的...
在 iBatis 中,动态查询条件是通过 `<dynamic>` 元素来实现的,该元素可以根据参数的值来生成不同的 SQL 语句。 在 iBatis 中,参数可以是基本类型、字符串、集合等,它们可以通过 `#` symbols 来传递给 SQL 语句。...
iBATIS是早期流行的Java持久层框架之一,它通过SQL映射文件将SQL语句与Java对象关联起来,实现数据的持久化操作。iBATIS的核心功能在于其强大的SQL映射能力和动态SQL生成机制,这使得开发人员能够灵活地处理复杂的...
### ibatis的动态查询知识点详解 #### 一、模糊查询 **知识点1:** 在进行模糊查询时,ibatis支持两种不同的语法标记:`#` 和 `$`。 1. **使用 `$value$` 进行模糊查询:** - 在进行模糊查询时,使用 `$value$` ...
iBATIS动态标签是SQL映射文件中的一种功能强大的特性,它允许在SQL语句中进行条件判断,根据传入的参数动态生成合适的查询条件。动态标签主要用于提高灵活性,使得SQL映射文件能够适应多种查询场景,而无需为每种...
根据给定的文件信息,以下是对“Ibatis常用...Ibatis通过其动态SQL标签如`iterate`, `isNotNull`, `dynamic`等提供了极高的灵活性,能够有效应对复杂多变的业务需求。掌握这些基本用法对于提升Ibatis开发效率至关重要。
6. **Dynamic SQL**:允许在XML映射文件中进行条件判断,动态生成SQL语句,提高了SQL的灵活性和复用性。 7. **Transactions**:SQL Maps支持声明式和编程式的事务管理,确保数据的一致性和完整性。 通过使用iBATIS...
iBatis 中的动态查询可以根据参数的值动态地生成 SQL 语句,实现了高效的查询功能。例如,在上面的示例代码中,我们使用 `<select>` 元素来定义查询语句,使用 `<dynamic>` 元素来定义动态 SQL 语句。 在动态 SQL ...
ibatis,ibatis,ibatis,ibatis,ibatis
在IT领域的数据库操作中,IBATIS框架提供了一种强大且灵活的方式来进行SQL查询,尤其在动态查询方面表现得尤为突出。本文将深入探讨IBATIS动态查询语句的运用,解析其背后的逻辑与机制,以及如何利用这些特性来增强...
iBatis 16个常用SQL语句 iBatis是一个基于Java的持久层框架,提供了一个简洁的方式来访问和操作数据库。在iBatis中,SQL语句是...iBatis提供了一个灵活的方式来配置SQL语句,支持各种类型的输入参数和复杂的查询语句。
总结起来,这个Ibatis查询语句充分展示了Ibatis处理复杂查询的能力,包括动态SQL、子查询、多表联接、条件判断、数据类型映射和迭代处理等功能。在实际开发中,这种灵活性使得Ibatis能够适应各种复杂的业务场景,...
在ibatis中,实现复杂的`AND` 和 `OR` 联合查询可以通过动态SQL来完成。动态SQL允许在运行时动态地构建SQL语句,从而实现更加灵活的查询功能。 #### 四、示例解析 根据提供的部分代码,我们可以详细分析如何在...
iBatis 的核心功能包括 SQL 映射、动态 SQL 生成等,它通过配置文件或者注解的形式来实现 SQL 语句与 Java 代码之间的映射关系。 #### 二、多表查询概述 在实际应用中,经常需要从多个表中获取数据,这被称为多表...
在IT行业中,数据库操作是应用程序的核心部分,而处理动态SQL是一项常见的挑战。iBATIS,作为一款优秀的持久层框架,提供...iBATIS的动态注入功能是其在数据库操作中的强大优势,也是许多开发者选择它的主要原因之一。
5. **Dynamic SQL**:iBATIS的动态SQL功能使得开发者能够在运行时根据条件构造SQL,避免了大量冗余的SQL语句,提高了代码的复用性。 6. **Transaction Management**:iBATIS支持JDBC和Spring两种事务管理方式,可以...
根据提供的文件信息,我们可以深入探讨ibatis框架中的动态SQL元素及其使用方法。下面将详细介绍标题、描述以及部分内容中涉及的关键知识点。 ### ibatis 动态代理DTD #### 标题解释 - **ibatis**: 是一个开源的...