IT 소스/MyBatis

[MyBatis] <trim> - 특정 조건에 따라 부분적으로 SQL 코드를 생략

한량이야기 2024. 2. 5. 13:20
반응형

안녕하세요. 경제적, 시간적 자유를 꿈꾸는 한량입니다.

trim tag

 

<trim> 태그는 시작과 끝 부분의 

공백이나 다른 문자를 제거하는 데 사용됩니다. 

주로 <where>, <set>, <foreach>와 함께 사용되어 

동적인 SQL을 생성할 때 유용합니다.

 

1. <trim> 태그의 구문 및 사용법

<!-- <trim> 태그의 기본 구조 -->
<trim prefix="문자열" suffix="문자열" prefixOverrides="문자열" suffixOverrides="문자열">
    <!-- 내용 -->
</trim>

prefix : 태그 내용의 앞에 추가할 문자열을 정의합니다.

suffix : 태그 내용의 뒤에 추가할 문자열을 정의합니다.

prefixOverrides : 태그 내용 중에서 특정 문자열로 시작하는 부분을 제거합니다.

suffixOverrides : 태그 내용 중에서 특정 문자열로 끝나는 부분을 제거합니다.

 

2. <trim> 태그의 예제

<!-- <trim> 태그 생성 예제. -->
<select id="selectUsers" parameterType="map" resultType="User">
    SELECT * FROM users
        <trim prefix="WHERE" prefixOverrides="AND">
            <if test="username != null and username != ''">
                AND username = #{username}
            </if>
            <if test="age != null">
                AND age = #{age}
            </if>
        </trim>
</select>

 

어떤 조건에도 해당되지 않는다면 아래와 같은 SQL이 만들어질 것입니다.

SELECT * FROM Users

 

두 번째 조건만 만족한다면 아래와 같은 SQL이 만들어질 것입니다.

SELECT * FROM users
    WHERE
          age = '20'

'prefix'의 속성으로 'WHERE'절이 추가되고,

'prefixOverrides' 속성으로 처음 나오는

'AND' 문자열이 제거됩니다.

 

<trim> 태그는 WHERE 절 내에서

각 조건을 추가할 때 불필요한 'AND'를 방지하고

쿼리를 더 동적으로 만들어줍니다.

 

반응형