Search Results for 'iBatis'

14 POSTS

  1. 2007.10.30 iBATIS-SQLMaps 2.0 Tutorial.pdf(한글번역판)
  2. 2007.10.30 dynamic iterate 기능에 대해서.. 1
  3. 2007.10.30 iBatis.apache.org
가끔씩 찾아보면서 학습하기에 좋다.
특히 오프라인인 경우에서...


dynamic iterate 기능에 대해서..

Posted 2007. 10. 30. 15:38

쿼리를 작성하다보면 조건절에 having이나 IN으로 넣어야 하는데...
이때 안에 들어가는 결과를 외부에서 가져다가 넣고자 할때 유용한것 같다.
예전엔 결과를 for문 돌리면서 "," 붙여가면서 String으로 넣었었는데...

Application으로 간단히 테스트 해보았다.
=============== Test.java==============
List<City>cityList  = sqlMap.queryForList("getCityList");
String [] arrayStr = new String[cityList.size()];

  for(int i = 0; i< cityList.size();i++) {
   City city = cityList.get(i);
   arrayStr[i] = city.getCountryCode();
  }

  City paramCity = new City();
  paramCity.setCountryTypes(arrayStr);

  List<City>cityListIterator  = sqlMap.queryForList("getCityListIterator", paramCity);

========sqlMap.xml==============
<select id="getCityListIteratorSuccess" resultMap="cityResult" parameterClass="City">
  SELECT ID, NAME, COUNTRYCODE, DISTRICT, POPULATION
  FROM CITY
  <dynamic prepend="WHERE COUNTRYCODE IN">
   <iterate property="countryTypes" open="(" close=")" conjunction=",">
    countryCode = #countryTypes[]#
   </iterate>
  </dynamic>
  ORDER BY NAME
 </select>
=================================
Result : OK 227Rows Returns...

Map으로 묶어서 넘길경우

Map<String, Object> paramMap = new HashMap<String, Object>();
  paramMap.put("arrStr", arrayStr);

<select id="getCityListIteratorSuccess2" resultMap="cityResult" parameterClass="map">
  SELECT ID, NAME, COUNTRYCODE, DISTRICT, POPULATION
  FROM CITY
  <dynamic prepend="WHERE COUNTRYCODE IN">
   <iterate property="arrStr" open="(" close=")" conjunction=",">
    countryCode = #arrStr[]#
   </iterate>
  </dynamic>
  ORDER BY NAME
 </select>
================================
역시 같은 결과....

클래스나 맵에 넣지 않고 넘기는 방법은? 실패... 이유는 모르겠다...



iBatis.apache.org

Posted 2007. 10. 30. 15:27


« PREV : 1 : 2 : 3 : 4 : 5 : NEXT »