프로그램 언어/ibatis,mybatis

ibatis iterate 사용법

[식군] 2010. 11. 24. 18:52

1. Collection 객체를 사용하거나, String[] 배열로 넘기는 방법
 - 이 방법은 검색하면 많이 나와요 ^^

2. ArrayList객체안에  Map객체로 여러 속성사용

- Java Coding
  public void test() throws Exception {
       Map<String, List<HashMap<String,String>>> map = new HashMap<String,    List<HashMap<String,String>>>();
  List<HashMap<String,String>> paramList = new ArrayList<HashMap<String,String>>();
  
  for (int idx = 0; idx < 5; idx++) {
   HashMap<String,String> hashmap = new HashMap<String,String>();
   hashmap.put("a", "a"+ idx);
   hashmap.put("b", "b"+ idx);
   hashmap.put("c", "c"+ idx);
   paramList.add(hashmap);
  }
  map.put("condition", paramList);
  list("manage.test",map);
 }

- Sql Coding
 <select id="manage.test" parameterClass="map" resultClass="egovMap" remapResults="true">
  <iterate property="condition"  conjunction="union">
   select $condition[].a$, $condition[].b$, $condition[].c$ from dual
  </iterate>
 </select>

3. VO를 이용한 코딩

- VO
public class TestVO {
 String a = "";
 String b = "";
 String c = "";
 public String getA() {
  return a;
 }
 public void setA(String a) {
  this.a = a;
 }
 public String getB() {
  return b;
 }
 public void setB(String b) {
  this.b = b;
 }
 public String getC() {
  return c;
 }
 public void setC(String c) {
  this.c = c;
 }

- Java Coding
 public void test() throws Exception {
  ArrayList<TestVO> param = new ArrayList<TestVO>();
  
  for (int idx = 0; idx < 5; idx++) {
   TestVO vo= new TestVO();
   vo.setA("a"+ idx);
   vo.setB("b"+ idx);
   vo.setC("c"+ idx);
   param .add(map);
  }
  list("test",param );
 }

- Sql Coding
 <select id="test" parameterClass="list" resultClass="testVO">
  <iterate conjunction="union">
   select #[].a#, #[].b#, #[].c# from dual
  </iterate>
 </select>