收集了一下“黑咖啡”的介绍: http://www.blogjava.net/kyleYang/archive/2010/02/02/311688.html
感谢能与大家分享
Iterate:这个属性遍历整个集合,并为List集合中的元素重复素体的内容。
Iterate 的属性:
prepend - 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选)
property - 类型为 java.util.List 的用于遍历的元素(必选)
open - 整个遍历内容体开始的字符串,用于定义括号(可选)
close -整个遍历内容体结束的字符串,用于定义括号(可选)
conjunction - 每次遍历内容之间的字符串,用于定义 AND 或 OR(可选)
遍历类型为 java.util.List的元素。
例子:
<iterate prepend=”AND” property=”userNameList”
open=”(” close=”)” conjunction=”OR”>
username=#userNameList[]#
</iterate>
ibatis中如何配置in语句,需要迭代,不能直接用string的写法
<select id="sql_test" parameterclass="myPramBean" resultclass="myResult">
select *from tablewhere name in
<iterate property="ids" conjunction="," close=")" open="(" />
#value[]#
</iterate>
and code=#code#
</select>
myPramBean
{
private String code;
private List ids;
...
}
eg:
<delete id="member.batchDelete" parameterClass="java.util.List">
DELETE FROM member where id IN
<iterate conjunction="," open="(" close=")" >
#value[]#
</iterate>
</delete>
注意:使用<iterate>时,在List元素名后面包括方括号[]非常重要,方括号[]将
对象标记为List,以防解析器简单地将List输出成String。
这个例子还行,但是我的是一个map。这个#userNameList[]#
似乎不能那样解决!
如下:
<!-- 分页 conditions是一个list-->
<sql id="queryDaily_clarkByPage">
<isNotEmpty property="conditions">
<iterate property="conditions" open="(" close=")" conjunction="AND">
<![CDATA[
tdate=#conditions[]:INT#
AND client_group=#contitions[]:VARCHAR#
AND client_no=#conditions[]:VARCHAR#
]]>
</iterate>
</isNotEmpty>
</sql>
如果是多个条件?比如#contitions[].tdate#,#contitions[].client_group#?
分享到:
相关推荐
在iBatis中,`<iterate>`标签是一个非常实用的功能,它允许我们处理集合数据,如数组、List或Map等,进行循环遍历并生成动态SQL语句。下面我们将详细探讨`<iterate>`标签的用法及其示例。 `<iterate>`标签的主要...
标题中的“ibatis<iterate>标签”指的是在iBATIS框架中用于动态SQL的一个关键功能。iBATIS是一个优秀的持久层框架,它允许将SQL语句直接嵌入到Java代码中,简化了数据库操作。而`<iterate>`标签是iBATIS提供的一个...
`<iterate>`标签是iBatis中用于循环遍历集合的一种机制,它允许你在SQL语句中动态生成参数列表,这对于批量操作(如批量插入、更新或删除)尤为重要。该标签支持多种属性,包括`property`、`conjunction`、`open`、`...
通过这些标签,开发者可以在iBATIS的SQL映射文件中实现灵活的动态SQL,如示例所示,可以根据`Account`对象的`username`属性是否存在和其值来决定`WHERE`子句的内容,从而实现更高效和可维护的数据库查询。
iBatis可以非常简单地将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 iBatis提供了批处理功能,可以在一次数据库连接中执行多个SQL语句,这极大地提高了处理大量数据时的性能...
本文将深入探讨“ibatis批量存储”这一主题,基于给定的文件名,我们将依次解析Ibatis中的iterate标签、批处理、foreach标签以及如何在Ibatis中使用HashMap。 1. Iterate标签详解及应用: Ibatis的iterate标签主要...
iBatis 中的动态查询可以根据参数的值动态地生成 SQL 语句,实现了高效的查询功能。例如,在上面的示例代码中,我们使用 `<select>` 元素来定义查询语句,使用 `<dynamic>` 元素来定义动态 SQL 语句。 在动态 SQL ...
通过上述步骤,我们可以在ibatis中实现高效的批量更新操作,极大地提升系统处理大规模数据的能力。这种方法不仅适用于Java环境下的开发,也适用于其他支持ibatis的编程语言。总之,ibatis提供的批量更新功能是处理...
在iBatis配置文件中,使用`<iterate>`标签遍历`appDevIds`数组,形成IN条件语句。 **2.2 情况二:多个输入参数循环次数是对称的** 当输入参数的循环次数与操作的次数相匹配时,可以创建一个HashMap,将参数名作为...
2. **设置参数**:在Java代码中创建参数对象,根据存储过程的需求设置参数值。 3. **调用存储过程**:通过SqlSession对象的`call`方法执行存储过程,传入存储过程的ID和参数对象。 4. **处理结果**:存储过程的...
- 在Ibatis的配置文件`SqlMapConfig.xml`中,可以设置`<settings>`标签内的`defaultExecutorType`属性为`BATCH`或`SIMPLE`,以确保每次执行的SQL都是独立的,避免因缓存导致的编码问题。 - 同时,确保你的项目编码...
循环遍历 `ids` 数组,将每个 ID 添加到 SQL 语句中,并正确处理分隔符(逗号)和括号的添加。 #### 3. 处理其他过滤条件 ```java if (type != null && !type.trim().equals("") && !type.equals("1")) { sb....
iBATIS通过`<iterate>`标签支持数组的遍历,将数组中的每个元素作为独立的值插入到SQL语句中。例如,`<iterate property="actionIds" open="(" close=")" conjunction=",">`这段代码会将`actionIds`数组中的每个元素...
上述示例中,`userNameList`是一个List类型的集合,`<iterate>`标签会遍历该集合中的所有元素,并为每个元素生成如下的SQL片段:`AND (username=#userNameList[0] OR username=#userNameList[1] OR ...)`。...
在iBATIS 2.0中文API中,我们可以深入理解这个框架的核心功能和用法,包括一对多、多对一的关系映射、属性设置以及解决方案的详细解析。 首先,一对多和多对一的关系映射是ORM(对象关系映射)中的关键概念。在...
### ibatis3.0中`in`的用法详解 #### 一、引言 在进行数据库查询时,经常会遇到需要根据多个值进行查询的情况,这时`IN`语句就显得尤为重要。`IN`语句可以用于判断某个字段的值是否在一个指定的列表之中,非常适用...
3. **参数映射**:通过 `@Param` 注解或 XML 配置,Ibatis 能够自动将 Java 对象的属性值映射为 SQL 查询的参数。 4. **缓存机制**:Ibatis 内置了缓存功能,分为一级缓存(SqlSession 级别)和二级缓存(Mapper ...
在 ibatis 中,可以使用 `<select>` 元素来定义 SQL 查询,并通过 `resultClass` 属性指定结果集的类型。为了使查询结果能够适应变化的列名和列数,我们需要设置 `remapResults` 属性为 `true`。 ```xml <!-- ...
- `applicationContext.xml`是Spring的主配置文件,它定义了Spring容器中的bean,包括对Struts、Ibatis等其他框架的配置,实现各组件间的依赖注入。 - `codelist.xml`则可能包含了全局共享的bean,如`...