[Mybatis] 동적 SQL을 사용하여 쿼리에서 컬럼 이름이나 테이블 이름을 동적으로 결정하는 방법과 예제

동적 SQL을 사용하여 쿼리에서 컬럼 이름이나 테이블 이름을 동적으로 결정하려면 MyBatis의 <choose>, <when>, <otherwise> 태그를 활용할 수 있습니다. 이를 통해 조건에 따라 쿼리의 일부를 동적으로 구성할 수 있습니다.

예제: 동적 SQL로 컬럼 이름 결정

<select id="selectByCondition" resultType="User">
    SELECT
    <choose>
        <when test="condition == 'A'">
            column_A
        </when>
        <when test="condition == 'B'">
            column_B
        </when>
        <otherwise>
            column_default
        </otherwise>
    </choose>
    FROM users
</select>` 

위의 예제에서는 selectByCondition 쿼리에서 condition 매개변수의 값에 따라 다른 컬럼을 선택하고 있습니다. choose 태그 내의 whenotherwise 태그를 사용하여 조건에 따라 컬럼 이름을 결정하고 있습니다.

예제: 동적 SQL로 테이블 이름 결정

<select id="selectFromTable" resultType="User">
    SELECT * FROM
    <choose>
        <when test="table == 'table_A'">
            table_A
        </when>
        <when test="table == 'table_B'">
            table_B
        </when>
        <otherwise>
            default_table
        </otherwise>
    </choose>
    WHERE ...
</select>` 

위의 예제에서는 selectFromTable 쿼리에서 table 매개변수의 값에 따라 다른 테이블에서 데이터를 선택하고 있습니다. choose 태그를 사용하여 조건에 따라 테이블 이름을 결정하고 있습니다.

동적 SQL을 사용하여 컬럼 이름이나 테이블 이름을 결정하는 것은 복잡한 쿼리를 구성할 때 유용합니다. 이를 통해 런타임 시에 쿼리를 다르게 구성할 수 있어 유연성을 확보할 수 있습니다.