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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值