使用IBATIS的iterate标签来动态构造SQL
需要注意的地方:
参数是List,iterate不需要设置property属性
<select id="IbatisChannelDAO.queryChannelById" parameterClass="java.util.List" resultMap="channel" fetchSize="100">
select id,channel_name,channel_id,description
from channel where id
<iterate prepend="in" open="(" close=")" conjunction=",">
#idList[]#
</iterate>
</select>
参数是queryChannelDO,idList是queryChannelDO的属性,需要设置property属性为idList
<select id="IbatisChannelDAO.queryChannel" parameterClass="queryChannelDO" resultMap="query_channel" fetchSize="100">
select channel_id,channel_name,id from channel
where id in
<iterate property="idList" close=")" open="(" conjunction="," >
#idList[]#
</iterate>
</select>
另外说说fetchSize设置对查询性能的影响,当采用select从数据库查询数据时,数据默认并不是一条一条返回客户端的,也不是一次全部返回给客户端的,而是根据客户端fetchSize参数处理,每次只返回fetchSize条记录,当客户端游标遍历到尾部时再从服务器取数据,直到最后全部取完为止。
fetchSize默认值为10,所以适当加大fetchSize可以减少结果数据传输的交互次数及服务器数据准备时间,提高性能。
根据测试结果建议fetchSize设置为100,不能设置太大,如果一次取出的数据大于JVM的内存会导致内存溢出
分享到:
相关推荐
标题中的“ibatis<iterate>标签”指的是在iBATIS框架中用于动态SQL的一个关键功能。iBATIS是一个优秀的持久层框架,它允许将SQL语句直接嵌入到Java代码中,简化了数据库操作。而`<iterate>`标签是iBATIS提供的一个...
在iBatis中,`<iterate>`标签是一个非常实用的功能,它允许我们处理集合数据,如数组、List或Map等,进行循环遍历并生成动态SQL语句。下面我们将详细探讨`<iterate>`标签的用法及其示例。 `<iterate>`标签的主要...
iBATIS动态标签是SQL映射文件中的一种功能强大的特性,它允许在SQL语句中进行条件判断,根据传入的参数动态生成合适的查询条件。动态标签主要用于提高灵活性,使得SQL映射文件能够适应多种查询场景,而无需为每种...
`<iterate>`标签是iBatis中用于循环遍历集合的一种机制,它允许你在SQL语句中动态生成参数列表,这对于批量操作(如批量插入、更新或删除)尤为重要。该标签支持多种属性,包括`property`、`conjunction`、`open`、`...
本文将深入探讨“ibatis批量存储”这一主题,基于给定的文件名,我们将依次解析Ibatis中的iterate标签、批处理、foreach标签以及如何在Ibatis中使用HashMap。 1. Iterate标签详解及应用: Ibatis的iterate标签主要...
iBatis的配置文件支持`<iterate>`标签,该标签用于在XML映射文件中进行循环处理。 **2.1 情况一:多个输入参数循环次数不对称** 在这种情况下,如果某些参数只有一份,而其他参数有多份,可以通过创建一个新的...
iBATIS通过`<iterate>`标签支持数组的遍历,将数组中的每个元素作为独立的值插入到SQL语句中。例如,`<iterate property="actionIds" open="(" close=")" conjunction=",">`这段代码会将`actionIds`数组中的每个元素...
在文档中,展示了如何使用<iterate>标签来生成IN子句,以便于将一个集合中的值动态地插入到SQL语句中。 7. 截止日期:在业务逻辑中,常常需要查询截止到某个特定日期或时间点的数据。iBatis配置允许使用动态SQL标签...
根据给定的文件信息,以下是对“Ibatis常用...Ibatis通过其动态SQL标签如`iterate`, `isNotNull`, `dynamic`等提供了极高的灵活性,能够有效应对复杂多变的业务需求。掌握这些基本用法对于提升Ibatis开发效率至关重要。
第二种方法是利用iBatis提供的`iterate`标签,它可以遍历整个集合并为列表中的每个元素生成SQL的一部分。iBatis官方文档中给出了一个示例: ```xml DELETE FROM info <iterate prepend="AND" property=...
上述示例中,`userNameList`是一个List类型的集合,`<iterate>`标签会遍历该集合中的所有元素,并为每个元素生成如下的SQL片段:`AND (username=#userNameList[0] OR username=#userNameList[1] OR ...)`。...
9. **迭代器标签 `<iterate>`**: - `<iterate>`用于处理数组或集合类型的参数,如`dismissStatusList`,它可以生成逗号分隔的条件,如`m.DISMISS_STATUS in ( ... )`。 总结起来,这个Ibatis查询语句充分展示了...
8.2.5 iterate标签 138 8.3 一个简单而完整的示例 139 8.3.1 定义如何检索和显示数据 140 8.3.2 确定将涉及哪些数据库结构 140 8.3.3 以静态格式编写SQL 141 8.3.4 将动态SQL标签应用到静态SQL上 141 8.4 高级动态...
总结起来,"struts+spring+ibatis(SSI)的最简分页及标签"是一个关于如何在Java Web开发中结合Struts的MVC架构、Spring的依赖管理和iBatis的数据访问来实现分页功能以及创建自定义标签的实践。这个过程涉及到Struts的...
在ibatis 2.x中,Dynamic Sql的配置较为繁琐,需要使用特定的标签如`<isNotNull>`、`<iterate>`等来构建动态部分。例如,为了根据参数是否为空来决定是否包含某个条件,需要使用`<isNotNull>`标签,而对于集合参数的...
`iterate`标签是Ibatis动态SQL中的一个强大工具,它用于迭代一个集合并生成相应的SQL片段。例如,假设我们需要根据一组ID来查询用户,可以这样写: ```xml SELECT * FROM user WHERE id IN (" separator="," ...
在这种情况下,`<iterate>`标签用于构建SQL的`IN`子句。`open`属性定义了`IN`子句的开始括号,`close`属性定义了结束括号,而`conjunction`属性定义了元素间的分隔符,通常是逗号。`#[]#`中的`[]`是占位符,Ibatis...
这些XML配置文件定义了具体的SQL语句,其中`iterate`标签用于处理列表中的每一项。 #### 四、DAO类实现 下面通过一个具体的例子来看如何在Java DAO层实现批量插入操作。 ```java import org.springframework.orm....
为了避免这种情况,我们可以使用iBATIS的`iterate`标签来遍历列表: ```xml select * from sys_road_line_info where road_line_no in <iterate open="(" close=")" conjunction=","> #value[]# </iterate> `...
本文将详细介绍 ibatis 中 Dynamic SQL 的使用方法,特别关注 `<dynamic>` 标签及其相关的子标签。 #### 二、Dynamic SQL 标签概述 Dynamic SQL 在 ibatis 中主要通过以下几种标签实现: 1. **`<dynamic>`**:用于...