ibatis中iterate的用法

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章