본문 바로가기

emotional developer/detect-Java

ibatis iterate , mybatis foreach 동적쿼리 비교.


http://mybatis.github.io/mybatis-3/ko/dynamic-sql.html


동적쿼리 사용이 ibatis 와 mybatis 간에 차이가 있는 것 같다.


ibatis 는 iterate , mybatis 는 foreach (개인적으로는 foreach 구문에 한표.)

고로, 둘 간의 쿼리변환을 위해서는 수고가 필요하다.


아래에 간단한 테스를 참조한다.



ex)

relayKeyList 파라미터는 List<List<Long>> 타입이다.


ibatis

SELECT

*

FROM

Test

WHERE

userno = 123

AND (

<iterate property="relayKeyList" conjunction=" OR ">

( no = CAST(#relayKeyList[].[0]# as numeric(20, 0)) AND no2 = CAST(#relayKeyList[].[1]# as numeric(20, 0)) )

</iterate>

)



foreach


SELECT

*

FROM

Test

WHERE

userno = 123

AND (

<foreach item="item" index="index" collection="relayKeyList" separator=" OR ">

( no = ${item[0]} AND no2 = ${item[1]} )

</foreach>

)



결과는


SELECT

*

FROM

Test

WHERE

userno = 123

AND (

( no = 11 AND no2 = 22 ) OR ( no = 33 AND no2 = 44 ) 

)












반응형

'emotional developer > detect-Java' 카테고리의 다른 글

mybatis Illegal overloaded getter method  (0) 2014.05.12
spring retry 간단 예제.  (0) 2014.04.16
java 타입형 interface.  (0) 2014.02.24