`
ilovejavaforever
  • 浏览: 163870 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

    ibatis批量处理

    在实际开发中,建议将iBatis与Spring结合使用,并利用Spring的事务管理功能简化代码,提高系统的可维护性和扩展性。此外,合理选择不同的实现方式(如直接使用iBatis API、基于Spring事务管理或使用回调方式),可以...

    ibatis批量存储

    本文将深入探讨“ibatis批量存储”这一主题,基于给定的文件名,我们将依次解析Ibatis中的iterate标签、批处理、foreach标签以及如何在Ibatis中使用HashMap。 1. Iterate标签详解及应用: Ibatis的iterate标签主要...

    ibatis dynamic 用法

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

    ibatis批处理

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

    ibatis批量删除的方法.docx

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

    常用ibatis配置

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

    Ibatis查询Id列表.doc

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

    Ibatis常用sql语句

    根据给定的文件信息,以下是对“Ibatis常用SQL语句”的详细解析,涵盖了一系列Ibatis在数据操作中的应用实例。 ### Ibatis简介 Ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀持久层框架。Ibatis可以让...

    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(现已被MyBatis取代)进行数据库操作时,我们常常需要传递参数到SQL语句中。在iBATIS中,有两种主要的方式来处理这些参数:使用`$`和`#`。这两种方式在不同的场景下有不同的效果。 首先,让我们来看看...

    ibatis资料

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

    iBatis操作

    在iBatis中,批量操作可以通过XML映射文件来定义,下面分别展示批量插入、更新和删除的示例。 ##### 批量插入 ```xml insert all &lt;iterate conjunction=""&gt; into SYS_TABLE (id, Category, Name, Code, Status...

    ibatis 动态代理dtd

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

    ibatis学习文档

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

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

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

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

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

    struts1(老师穿的课件哈)

    你需要创建一个Action类,包含处理分页请求的方法,如`doList()`,并在此方法中计算当前页和总页数。 2. 数据库查询:根据用户传递的页码参数,从数据库中查询对应的数据范围。这可能涉及到SQL的LIMIT或OFFSET子句...

    BookSSH-ldg.zip

    在具体实现过程中,开发者可能会使用Struts的Action和ActionForm类来定义处理请求的逻辑。Action类是控制器的核心,负责调用服务层的方法;ActionForm则用于封装用户的请求数据。同时,利用Struts的标签库(例如...

Global site tag (gtag.js) - Google Analytics