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') )
이렇게 쿼리가 나오게 되는것이다.
728x90
반응형