`
wengsibo
  • 浏览: 83524 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

ibatis<iterate>标签

阅读更多
对ibatis标签<iterate>的理解,在看ibatis文档时,就看见过这个标签,并且还
对其不是很了解,一直没有到现在,在工作中用到了这个标签时,
才去了解了一下这个标签的具体含义。
先把文档中对该标签的介绍贴出来一起分享。
Iterate:这属性遍历整个集合,并为List集合中的元素重复元素体的内容。
Iterate的属性:
prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
property - 类型为java.util.List的用于遍历的元素(必选)
open - 整个遍历内容体开始的字符串,用于定义括号(可选)
close -整个遍历内容体结束的字符串,用于定义括号(可选)
conjunction - 每次遍历内容之间的字符串,用于定义AND或OR(可选)
iterate>
遍历类型为java.util.List(或数组)的元素。
例子:
<iterate prepend=”AND” property=”userNameList”
open=”(” close=”)” conjunction=”OR”>
username=#userNameList[]#
</iterate>
注意:使用<iterate>时,在List元素名后面包括方括号[]非常重要,方括号[]将对象标记为List,
以防解析器简单地将List输出成String。
我本人对上面<iterate>标签中内容的理解如下:
在生成该条sql语句时,<iterate>标签中的内容是循环生成的,就拿上面的例子来说,生成的sql是
(username=xxx1 or username=xxx2 or username=xxx 3)
而不是(username=xxx1 or xxx2 or xxx3)
再举个例子,如下:
id in
<iterate  prepend="" property="ids"  open="("  close=")"  conjunction="," >
               #ids[]#
  </iterate> 。。。。。。。(1)
  其生成的sql语句是:id in (xx1,xx2,xx3,.....),括号中的(包括括号)是<iterate>标签生成的。
  <iterate>标签虽然是遍历整个集合的,但他也不象我们在java中用到的for一样,一次一次的
  循环生成标签中的内容,而是一次性利用list或数组生成整个可运行的sql语句。
  就好比(1)它生成的sql不可能象这样:id in (xx1)
  id in (xx2)  ,id in (xx3),.....
分享到:
评论

相关推荐

    ibatis标签

    标题中的“ibatis&lt;iterate&gt;标签”指的是在iBATIS框架中用于动态SQL的一个关键功能。iBATIS是一个优秀的持久层框架,它允许将SQL语句直接嵌入到Java代码中,简化了数据库操作。而`&lt;iterate&gt;`标签是iBATIS提供的一个...

    ibatis中iterate的例子

    在iBatis中,`&lt;iterate&gt;`标签是一个非常实用的功能,它允许我们处理集合数据,如数组、List或Map等,进行循环遍历并生成动态SQL语句。下面我们将详细探讨`&lt;iterate&gt;`标签的用法及其示例。 `&lt;iterate&gt;`标签的主要...

    iBATIS动态标签

    `&lt;dynamic&gt;`标签是iBATIS动态标签的核心,它允许在其内部包含一系列的条件标签,根据不同的条件来决定哪些部分应该被插入到最终的SQL语句中。`&lt;dynamic&gt;`标签有三个主要属性: 1. `prepend`: 在动态内容前添加的字符...

    ibatis list

    `&lt;iterate&gt;`标签是iBatis中用于循环遍历集合的一种机制,它允许你在SQL语句中动态生成参数列表,这对于批量操作(如批量插入、更新或删除)尤为重要。该标签支持多种属性,包括`property`、`conjunction`、`open`、`...

    ibatis批处理

    iBatis的配置文件支持`&lt;iterate&gt;`标签,该标签用于在XML映射文件中进行循环处理。 **2.1 情况一:多个输入参数循环次数不对称** 在这种情况下,如果某些参数只有一份,而其他参数有多份,可以通过创建一个新的...

    iBatis的动态SQL语句

    上述示例中,`userNameList`是一个List类型的集合,`&lt;iterate&gt;`标签会遍历该集合中的所有元素,并为每个元素生成如下的SQL片段:`AND (username=#userNameList[0] OR username=#userNameList[1] OR ...)`。...

    ibatis dynamic 用法

    本文将详细介绍 ibatis 中 Dynamic SQL 的使用方法,特别关注 `&lt;dynamic&gt;` 标签及其相关的子标签。 #### 二、Dynamic SQL 标签概述 Dynamic SQL 在 ibatis 中主要通过以下几种标签实现: 1. **`&lt;dynamic&gt;`**:用于...

    ibatis学习文档

    在这种情况下,`&lt;iterate&gt;`标签用于构建SQL的`IN`子句。`open`属性定义了`IN`子句的开始括号,`close`属性定义了结束括号,而`conjunction`属性定义了元素间的分隔符,通常是逗号。`#[]#`中的`[]`是占位符,Ibatis...

    ibatis常用sql语句

    iBATIS通过`&lt;iterate&gt;`标签支持数组的遍历,将数组中的每个元素作为独立的值插入到SQL语句中。例如,`&lt;iterate property="actionIds" open="(" close=")" conjunction=","&gt;`这段代码会将`actionIds`数组中的每个元素...

    Ibatis复杂查询语句.doc

    9. **迭代器标签 `&lt;iterate&gt;`**: - `&lt;iterate&gt;`用于处理数组或集合类型的参数,如`dismissStatusList`,它可以生成逗号分隔的条件,如`m.DISMISS_STATUS in ( ... )`。 总结起来,这个Ibatis查询语句充分展示了...

    ibatis批量删除的方法.docx

    第二种方法是利用iBatis提供的`iterate`标签,它可以遍历整个集合并为列表中的每个元素生成SQL的一部分。iBatis官方文档中给出了一个示例: ```xml &lt;delete id="deleteList" parameterClass="java.util.List"&gt; ...

    iBatis操作

    &lt;iterate conjunction=""&gt; into SYS_TABLE (id, Category, Name, Code, Status) values (#[].Id#, #[].Category#, #[].Name#, #[].Code#, #[].Status#) &lt;/iterate&gt; &lt;!-- 也可以选择返回主键 --&gt; select * ...

    Ibatis常用sql语句

    update Question set status=#status# &lt;dynamic prepend="where questionId in"&gt; &lt;isNotNull property="actionIds"&gt; &lt;iterate property="actionIds" open="(" close=")" conjunction="," &gt; #actionIds[]# &lt;/iterate...

    常用ibatis配置

    在文档中,展示了如何使用&lt;iterate&gt;标签来生成IN子句,以便于将一个集合中的值动态地插入到SQL语句中。 7. 截止日期:在业务逻辑中,常常需要查询截止到某个特定日期或时间点的数据。iBatis配置允许使用动态SQL标签...

    struts+spring+ibatis(SSI)的最简分页及标签

    &lt;pager:iterate property="pages" id="page"&gt; &lt;a href="&lt;%= page %&gt;"&gt;&lt;%= page %&gt;&lt;/a&gt; &lt;/pager:iterate&gt; ``` 在JSP页面中使用这个自定义标签: ```jsp &lt;pager:pager/&gt; ``` 总结起来,"struts+spring+ibatis(SSI)...

    ibatis批量存储

    iterate标签的基本语法是`&lt;iterate property="collectionName" open="(" close=")" conjunction=","/&gt;`,其中`property`指定了集合属性的名称,`open`和`close`定义了循环开始和结束的符号,`conjunction`则是元素...

    Ibatis.net结合oracle批量删除实现代码

    在这个标签中,使用&lt;isNotNull&gt;标签确保只有当SDSALES_IDs非空时才执行删除操作,而&lt;iterate&gt;标签则用于迭代ID数组,并为每个ID生成IN子句中的参数: ```xml &lt;delete id="DeleteManyT_LABEL_SDSALES" ...

    Ibatis资料ibatai sql map iBATIS使用$和#的一些理解

    Map&lt;String, String&gt; map = new HashMap&lt;&gt;(); map.put("name", "gaoxiang"); List&lt;User&gt; list = sqlMap.queryForList("getPeopleList", map); ``` 这里,`name`是参数名,对应的值是`gaoxiang`。在SQL语句中,`$...

    ibatis结合oracle批量插入三种方法的测评

    这种方法使用iterate标签来批量插入数据,但是Oracle不支持一个insert语句中包含多个values的方式。这意味着,如果你想插入多行数据,你需要执行多个insert语句,这将导致性能问题。例如: ``` &lt;insert id="insert_...

Global site tag (gtag.js) - Google Analytics