728x90
반응형

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 ) 

)





728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,