ibatis iterate使用

Iterate:这属性遍历整个集合,并为 List 集合中的元素重复元素体的内容。
Iterate的属性: 
      prepend - 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选) 
      property - 类型为 java.util.List 的用于遍历的元素(必选) 
      open - 整个遍历内容体开始的字符串,用于定义括号(可选) 
      close -整个遍历内容体结束的字符串,用于定义括号(可选) 
      conjunction-  每次遍历内容之间的字符串,用于定义 AND 或OR(可选) 
      遍历类型为java.util.List的元素。

 
  public intdeletePerson(Map<String, Object> map){
        
        List<Person> personList=newArrayList<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');
        returngetSqlMapClientTemplate().delete("person.deletePerson", map);
    }

public class Person{
  public Person(intage){
     this.age=age;
  }
  
  private int age;

··········
}

<!-- 删除性别为man,年龄为 11,12 的Person记录,删除相应的person记录-->
  <delete id="deletePerson"parameterClass="map">

    deletefrom 表名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)
也可以写为:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值