ibatis 的 iterate 的用法

news/2024/7/11 0:38:55 标签: iBATIS, SQL, XML, Blog
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

http://www.niftyadmin.cn/n/872410.html

相关文章

Redis设计与实现读书笔记---复制/Sentinel/集群

复制 复制模式&#xff1a;用户通过执行SLAVEOF命令或者设置slaveof选项&#xff0c;让一个服务器区复制另一个服务器。 旧版复制功能 Redis的复制功能分为同步&#xff08;sync&#xff09;和命令传播&#xff08;command propagate&#xff09;&#xff1b; 同步操作用于…

ibatis 调用存储过程

Ibatis调用存储过程 procedure.xml的ibatis配置文件如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?><!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.d…

Redis设计与实现读书笔记---发布订阅/事务/排序/慢查询

发布与订阅 当一个Redis客户端执行PUBLISH 命令将消息message发送给频道channel时&#xff0c;服务器执行如下动作&#xff1a; 将消息message发送给channel频道所以订阅者‘如果有一个或多个模式pattern与频道channel相匹配&#xff0c;那么消息message发送给pattern模式的订…

ibatis 调用存储过程(2)

http://blog.csdn.net/fy_kenny/archive/2008/04/30/2350586.aspx 全部是针对Microsoft SQL Server 2000的Stored Procedure的例子&#xff1a;参照《iBATIS in Action》书写&#xff1a;1. max_in_exampleStored Procedure:CREATE PROCEDURE [dbo].[max_in_example]a INTEGE…

01项目管理引论

项目管理的五大过程组 大纲 项目管理引论项目运行环境项目经理角色项目整合管理项目范围管理项目进度管理项目成本管理项目质量管理项目资源管理项目沟通管理项目风险管理项目采购管理项目相关方管理 五大过程组 启动规划执行监控收尾 项目整合管理项目范围管理项目进度管理…

ibatis配置多表关联(一对一、一对多、多对多)

iBatis的多表关联。 ibatis的表关联,和数据库语句无关,是在Java程序中,把若干语句的结果关联到一起。这种关联形式,虽然在大数据量时是很奢侈的行为,但是看起来很干净,用起来也很方便。 这里用表lock和key为例,一个lock可以配多个key。 CREATE TABLE lock( id int, l…

02项目运行环境

项目运行环境 环境对项目的影响 事业环境因素&#xff08;EEF&#xff09;&#xff1a;无法控制的部分&#xff0c;指项目团队不能控制的&#xff0c;将对项目产生影响、限制或指令作用的各种条件。这些条件可能来自组织内部或者外部。 组织过程资产&#xff08;OPA&#xff0…

ibatis配置文件的namespace

ibatis的配置文件中有一个命名空间的属性&#xff0c;如<sqlMap namespace"common">&#xff0c;默认情况下这个功能是关闭的。要打开它需要在SqlMapConfig.xml文件中进行配置&#xff1a;<sqlMapConfig><settingscacheModelsEnabled"true"…