잡다한 IT

MyBatis, 동적 쿼리 사용 (동적 컬럼명 적용)

ssamhago 2024. 9. 2. 19:13
728x90
320x100

 

MyBatis

 

문자그대로 적용되기 위해서는 ${ } 를 사용해야 한다

 

 

MyBatis에서 작성할 수 있는 기본적인 동적 쿼리는 단순히 WHERE절에 파라미터를 적용한 방법이다.

XML파일에서

<SELECT ID="SEARCH" RESULTMAP="SEARCHVO" PARAMETERTYPE="MAP">
    SELECT
        *
    FROM EMPLOYEE
    WHERE
        #{PARAM1} = #{PARAM2}
</SELECT>

 


PARAM1 에서는 동적 컬럼명(MEMBER_ID)을 변수로 받고,
PARAM2 는 해당 컬럼에 포함되는 데이터('TISTORY')를 받아 처리하고자 하였지만,

쿼리의 결과는 

SELECT
     *
FROM EMPLOYEE
WHERE
    'MEMBER_ID' = 'TISTORY'

 

처럼 동적 컬럼명이 제대로 적용되지 않았다.

 

#{ } 는 파라미터 값이 작은따옴표(' ') 로 감싸서 들어간다.
작은 따옴표 없이 문자그대로 적용되기 위해서는 ${ } 를 사용해야 한다.

 

<SELECT ID="SEARCH" RESULTMAP="SEARCHVO" PARAMETERTYPE="MAP">
    SELECT
        *
    FROM EMPLOYEE
    WHERE
        ${PARAM1} = #{PARAM2}
</SELECT>

▼▼▼▼▼▼

SELECT
    *
FROM EMPLOYEE
WHERE
    MEMBER_ID = 'TISTORY'
728x90
반응형