iBtatis的动态特性在很多时候能帮助大家做很多事情.Iterator就是用一个列表动态的生成sql的一部分的动态特性.网上这方资料有很多,个人觉得不是很全.在这里抛砖引玉,望高手多多指教.
iterator的语法相对比较简单.下面摘抄语法于下.(引用于http://blog.csdn.net/dinglinhu/archive/2008/05/27/2487647.aspx )
Iterate:这属性遍历整个集合,并为List集合中的元素重复元素体的内容。
Iterate的属性:
prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
property - 类型为java.util.List的用于遍历的元素(必选)
open - 整个遍历内容体开始的字符串,用于定义括号(可选)
close -整个遍历内容体结束的字符串,用于定义括号(可选)
conjunction - 每次遍历内容之间的字符串,用于定义AND或OR(可选)
在比较多的网站上就property
很多不同的说法.下面我们通过实例觉得我们的结论:
eg1.传入的参数是一个list类型.此时property不需要.
<delete id="Employee.delete" parameterClass="list">
DELETE FROM Employee WHERE 1=1
<iterate prepend=" AND id in " open="(" close=")" conjunction=",">
#[]#
</iterate>
</delete>
调用形式:
List<Integer> ids=new ArrayList<Integer>();
for (int i = 1; i < 10; i++) {
ids.add(i);
}
sqlMapClient.delete("Employee.delete",ids);
eg2.传入的参数不是list类型,是一个简单的Pojo,但是该pojo有个list类型的属性
<delete id="Employee.delete2" parameterClass="org.jenfer.entity.Dept">
DELETE FROM employee WHERE 1=1
<iterate property="empIds" prepend=" AND id in " open="(" close=")" conjunction=",">
#empIds[]#
</iterate>
</delete>
调用形式:
Dept dept=new Dept();
List<Integer> empIds=new ArrayList<Integer>();
dept.setEmpIds(empIds);
for (int i = 1; i < 10; i++) {
empIds.add(i);
}
sqlMapClient.delete("Employee.delete2",dept);
eg3:传入的参数不是list类型,是一个简单的Pojo,但是该pojo有个list类型的属性,而且list的元素类型是一个Pojo,不是一个基本类型或者包装类.
<delete id="Employee.delete1" parameterClass="org.jenfer.entity.Dept">
DELETE FROM employee WHERE 1=1
<iterate property="employees"
prepend=" AND username in " open="(" close=")" conjunction=",">
#employees[].username#
</iterate>
</delete>
调用形式:
List<Employee> employees=new ArrayList<Employee>();
Dept dept=new Dept();
dept.setEmployees(employees);
Employee employee=null;
for (int i = 1; i < 10; i++) {
employee=new Employee();
employee.setUsername("zhangsan"+i);
employees.add(employee);
}
sqlMapClient.delete("Employee.delete1",dept);
综上所述:在eg1在的情况下property属性不需要.在eg2,3情况下property是需要的.另外注意eg2,eg3的的语法稍有不同.
分享到:
相关推荐
ibatis入门与ibatis迭代的用法
ibatis学习 ibatis总结 ibatis ibatis ibatis
ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料
ibatis demo,ibatis例子,ibatis示例
iBATIS 级联iBATIS 级联iBATIS 级联
ibatis的原码 ibatis源码 ibatis源码 ibatis源码
ibatis
《iBATIS实战》的最后给出了一个设计优雅、层次清晰的示例程序JGameStore,该示例涵盖全书的大部分知识点,可以作为iBATIS学习和Web开发的经典案例,非常值得深入研究。 编辑推荐 《iBATIS实战》既可为广大的开发...
Ibatis3,手册,Ibatis3手册,Ibatis3使用手册,Ibatis3参考手册
ibatis代码自动生成,ibatis代码自动生成,ibatis代码自动生成,ibatis代码自动生成
Spring与iBATIS的集成 iBATIS似乎已远离众说纷纭的OR框架之列,通常人们对非常流行的Hibernate情有独钟。但正如Spring A Developer's Notebook作者Bruce Tate 和Justin Gehtland所说的那样,与其他的OR框架相比...
ibatis api,ibatis文档,ibatis说明文档
ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南
ibatis教程,ibatis帮助文档,ibatis学习入门
ibatis 乱码解决 ibatis乱码 gbk iso_8859_1 乱码
简单的Ibatis入门例子,让你踏入Ibatis大门
经典开源插件之ibatis: 一个使用ibatis对数据库增删改查的例子 数据库, ibatis, 经典, 例子, 插件
iBatis文档\ibatis.doc
ibatis 拼接字符串
其中包含iBatis精讲PDF iBatis实例 iBatis开发指南 iBatis分页 spring+iBatis处理1对多数据表实例等等若干帮助文档。希望可以帮助大家学习iBatis...