`

ibatis 的 iterate 的用法

阅读更多
http://sunfish.blog.51cto.com/417500/108315
PersonDaoImp如下:
/**
* 删除性别为man,年龄为 11,12 的Person记录
*/
public int deletePerson(Map<String, Object> map) {

List<Person> personList=new ArrayList<Person>();

Person p1=new Person(11);
person p2=new Person(12);
personList.add(p1);
personList.add(p2);

map.put("personList", personList);

map.put("sex",'man');
return getSqlMapClientTemplate().delete(
"person.deletePerson", map);
}
person.xml如下:

<!-- 删除相应的person记录 -->
<delete id="deletePerson" parameterClass="map">

delete from 表名 where      sex=#sex#        
<iterate prepend="and" property="personList" open="("
close=")" conjunction="or">
age=$personList[].age$
</iterate>

</delete>
输出sql如下:
delete from 表名 where sex='man' and (age =11 or age=12)

当然你也可以这么写:
person.xml如下:

<!-- 删除相应的person记录 -->
<delete id="deletePerson" parameterClass="map">

delete from 表名 where      sex=#sex#     and age in  
<iterate property="personList" open="("
close=")" conjunction=",">
$personList[].age$
</iterate>

</delete>
输出sql如下:
delete from 表名 where sex='man' and age in (11 ,12)

最后Person代码大致如下:

public class Person{
public Person(int age){
this.age=age;
}
/**
* 年龄
*/
private int age;
/**
* 性别
*/
private String sex;

//get/set方法略
...
}//end of Person

本文出自 “sunfish 翻车鱼” 博客,请务必保留此出处http://sunfish.blog.51cto.com/417500/108315
分享到:
评论

相关推荐

    ibatis中iterate的例子

    当调用这个方法时,iBatis会自动生成如下SQL: ```sql SELECT * FROM users WHERE id IN (1, 2, 3, ...) ``` 注意,`#{ids[index]}`中的`index`是可选的,如果省略,则默认使用集合中的元素。如果需要访问集合中的...

    ibatis批量处理

    ### iBatis批量处理知识点详解 #### 一、iBatis基本实现 iBatis(现已更名为MyBatis)是一...此外,合理选择不同的实现方式(如直接使用iBatis API、基于Spring事务管理或使用回调方式),可以使程序更加灵活、高效。

    ibatis批量存储

    使用Ibatis的批处理,首先需要开启SqlSession的自动提交,然后调用SqlSession的batch()方法进入批处理模式,接着执行多次insert、update或delete操作,最后调用commit()方法提交事务。这种方式避免了频繁的数据库...

    ibatis批处理

    在iBatis配置文件中,使用`&lt;iterate&gt;`标签遍历`appDevIds`数组,形成IN条件语句。 **2.2 情况二:多个输入参数循环次数是对称的** 当输入参数的循环次数与操作的次数相匹配时,可以创建一个HashMap,将参数名作为...

    ibatis dynamic 用法

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

    Ibatis常用sql语句

    根据给定的文件信息,以下是对“Ibatis常用SQL语句”的详细解析,涵盖了一系列Ibatis在数据操作中的应用实例。 ### Ibatis简介 Ibatis是一个支持普通SQL查询、...掌握这些基本用法对于提升Ibatis开发效率至关重要。

    Ibatis查询Id列表.doc

    文档标题与描述均为“Ibatis查询Id列表.doc”,这表明文档内容主要聚焦于如何使用Ibatis查询ID列表。ID列表在实际应用中通常用于获取一系列记录的主键值,以便后续进行更复杂的操作或查询。 ### 三、查询Id列表的...

    ibatis批量删除的方法.docx

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

    常用ibatis配置

    标题中提到的“常用ibatis配置”指的是在使用iBatis这一数据持久层框架中,常见的配置用法和技术点。iBatis(现称为MyBatis)是一个流行的Java持久层框架,它通过使用XML或注解的方式,将SQL语句与对象进行映射,...

    iBATIS实战

    3.4.1 在独立应用程序中使用iBATIS 50 3.4.2 在Web应用程序中使用iBATIS 50 3.5 iBATIS和JDBC 51 3.5.1 释放JDBC资源 51 3.5.2 SQL注入 51 3.5.3 降低复杂度 52 3.6 配置iBATIS(续) 53 3.6.1 SQL Map配置文件 54 ...

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

    为了避免这种情况,我们可以使用iBATIS的`iterate`标签来遍历列表: ```xml select * from sys_road_line_info where road_line_no in &lt;iterate open="(" close=")" conjunction=","&gt; #value[]# &lt;/iterate&gt; `...

    ibatis资料

    在"Ibatis动态查询例子(#和$以及iterate等的用法) - Java - JavaEye论坛.mht"这个文件中,可能包含了JavaEye社区成员关于Ibatis动态查询的深入讨论和示例。这些讨论可能涵盖了实际开发中的问题和解决方案,比如如何...

    ibatis 动态代理dtd

    根据提供的文件信息,我们可以深入探讨ibatis框架中的动态SQL元素及其使用方法。下面将详细介绍标题、描述以及部分内容中涉及的关键知识点。 ### ibatis 动态代理DTD #### 标题解释 - **ibatis**: 是一个开源的...

    iBatis操作

    3. **使用Spring框架**:集成iBatis,通过Spring管理事务。 #### 三、配置文件 在iBatis中,批量操作可以通过XML映射文件来定义,下面分别展示批量插入、更新和删除的示例。 ##### 批量插入 ```xml insert all ...

    ibatis学习文档

    以下是对Ibatis中传入数组作为查询条件的几种方法的详细解释: 1. **传入参数仅有数组**: 在这种情况下,`&lt;iterate&gt;`标签用于构建SQL的`IN`子句。`open`属性定义了`IN`子句的开始括号,`close`属性定义了结束括号...

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

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

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

    其中一种方式是使用&lt;iterate&gt;标签来进行批处理,这样可以将一个大的参数集合分割成多个小的参数集,并且逐一进行处理。 具体到代码实现方面,首先需要定义要删除的数据集合。在C#代码中,我们可以通过字符串来表示...

    Java框架面试题总结

    - 在`execute`方法中避免使用实例变量,只使用局部变量。 **10. Tiles框架是什么?** Tiles框架是一种用于构建网页布局的框架,它可以方便地创建复杂的网页布局。Tiles框架通常与Struts框架结合使用,用来定义页面...

    struts1(老师穿的课件哈)

    5. 数据库操作:使用JDBC或者ORM框架(如Hibernate或iBatis)来执行SQL语句,完成数据的插入或更新。 6. 处理结果:根据数据库操作的结果,决定是跳转到成功页面还是错误提示页面。 在分析压缩包中的源代码时,你...

    BookSSH-ldg.zip

    此外,Struts还支持Hibernate或iBatis等持久层框架,方便开发者进行数据库操作,进一步简化了数据映射的过程。 在具体实现过程中,开发者可能会使用Struts的Action和ActionForm类来定义处理请求的逻辑。Action类是...

Global site tag (gtag.js) - Google Analytics