본문 바로가기
Developer/DB

[DB] ibatis iterate 사용, 배열처리

by 순수한소년 2016. 9. 14.
728x90
반응형

--출처 http://javafactory.tistory.com/entry/ibatis-iterate-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0


ibatis에서 iterate를 사용해보자. 

 

반복문을 쓰는거다.

 

 

select를 10000번 포문 돌면서 하는게 빠른지

 

select 문에서 조건저을 iterate를 사용해서 길게 적고 한번 쿼리하는게 빠른지 비교해보기 위해서

 

진행하였다.

 

 

이건 ArrayList<String>을 던졌을 때

1
2
3
4
5
6
7
8
  <select id="getKey" parameterClass="java.util.List" resultClass="resi">
  SELECT id, register, name, location, year, sex, mobile, state,
  timeupdate, isregister FROM profile_register
  WHERE
  <iterate open="(" conjunction="or" close=")">
   id = #[]#
  </iterate>
 </select>
cs

 

이건 ArrayList<Object>를 던졌을때

1
2
3
4
5
6
7
8
9
 <select id="getKeyforObject" parameterClass="java.util.List"
  resultClass="resi">
  SELECT id, register, name, location, year, sex, mobile, state,
  timeupdate, isregister FROM profile_register
  WHERE
  <iterate open="(" conjunction="or" close=")">
   id = #[].id#
  </iterate>
 </select>
cs

 

 

위 방식으로 사용한다.

 

 

그리고 or 반복 말고 IN을 써서 진행.

1
2
3
4
5
6
7
8
9
10
11
 <select id="getKeyforObject" parameterClass="java.util.List"
resultClass="resi">
SELECT id, register, name, location, year, sex, mobile, state,
timeupdate, isregister FROM profile_register
WHERE id IN (
  <iterate open="(" conjunction="," close=")">
id = #[].id#
</iterate>
 
)
 </select> 
cs

 

In 구문은 테스트 안해봤다.

1
2
3
4
<select id="StudentsQry" parameterClass="list">
    select * from STUDENTS where ( id, name ) in
    <iterate open="(" close=")" conjunction="," > ( #[].id# , #[].name# ) </iterate>
<select
cs

 

이렇게 짠다고 치면 

 

select * from STUDENTS where ( id, name ) in ( (1,'a'), (2,'b') ) 

 

이렇게 쿼리가 나오게 되는것이다. 

반응형