본문 바로가기
GD's IT Lectures : 기초부터 시리즈/마이바티스(MyBatis) 기초부터 ~

[마이바티스(MyBatis)] 동적 SQL

by GDNGY 2023. 5. 16.

Chapter 4. 동적 SQL

마이바티스는 SQL을 동적으로 생성할 수 있는 기능을 제공합니다. 이 장에서는 동적 SQL의 필요성, 기본 구조, 그리고 다양한 동적 SQL 활용 예제를 제공합니다. 동적 SQL을 이용하면 상황에 따라 다양한 형태의 SQL을 효율적으로 작성할 수 있습니다.

 


 

반응형

 


 

[Chapter 4. 동적 SQL]

 

4.1. 동적 SQL의 필요성

4.1.1. 동적 SQL의 개념

4.1.2. 동적 SQL의 장점

 

4.2. 동적 SQL 기본 구조

4.2.1. 동적 SQL 작성 규칙

4.2.2. 기본적인 동적 SQL 구조 예시

 

4.3. 동적 SQL 활용 예제

4.3.1. if 사용법

4.3.1.1. if 태그의 역할

4.3.1.2. if 태그 활용 예시

4.3.2. choose 사용법

4.3.2.1. choose 태그의 역할

4.3.2.2. choose 태그 활용 예시

4.3.3. foreach 사용법

4.3.3.1. foreach 태그의 역할

4.3.3.2. foreach 태그 활용 예시

4.3.4. <trim>, <where>, <set> 사용법

4.3.4.1. trim 태그의 역할

4.3.4.2. trim 태그 활용 예시

4.3.4.3. where 태그의 역할

4.3.4.4. where 태그 활용 예시

4.3.4.5. set 태그의 역할

4.3.4.6. set 태그 활용 예시

 


4.1. 동적 SQL의 필요성

프로그래밍에서 유연성은 매우 중요합니다. 고정된 로직만을 가진 코드는 다양한 상황에 대응하기 어렵습니다. 특히 데이터베이스와 상호작용하는 경우, 사용자의 요청이나 프로그램의 상태에 따라 다른 쿼리를 실행해야 할 때가 많습니다. 이러한 상황에서 동적 SQL은 필수적인 도구가 됩니다. 

예를 들어, 사용자가 웹사이트의 검색 기능을 이용할 때, 다양한 조건으로 검색을 요청할 수 있습니다. 어떤 사용자는 이름으로 검색을 원할 수 있고, 어떤 사용자는 이메일로 검색을 원할 수 있습니다. 이 경우, 사용자의 요청에 따라 SQL 쿼리를 동적으로 변경할 필요가 있습니다. 

 

4.1.1. 동적 SQL의 개념

동적 SQL은 프로그램 실행 중에 SQL 쿼리를 생성하거나 변경할 수 있는 기법을 말합니다. 이를 통해 프로그램의 상태나 사용자의 요청에 따라 쿼리를 유연하게 변경할 수 있습니다. 

 

마이바티스는 이러한 동적 SQL을 지원하기 위해 다양한 XML 태그를 제공합니다. <if> 태그는 조건에 따라 쿼리를 변경하는 데 사용되며, <choose> 태그는 여러 조건 중 하나를 선택하는 데 사용됩니다. 또한, <foreach> 태그는 배열이나 컬렉션의 요소를 반복하여 쿼리를 생성하는 데 사용됩니다. 

 

[예제]

<select id="selectUsers" parameterType="com.example.UserSearch" resultMap="UserResult">
    SELECT * FROM Users
    <if test="name != null">
        WHERE name = #{name}
    </if>
    <if test="email != null">
        AND email = #{email}
    </if>
</select>

 

이 예제에서는 사용자의 이름과 이메일에 따라 검색 쿼리가 동적으로 변경됩니다. 사용자가 이름을 입력한 경우에만 name 조건이 추가되고, 이메일을 입력한 경우에만 email 조건이 추가됩니다. 

 

4.1.2. 동적 SQL의 장점

동적 SQL을 사용하면 유사한 작업을 수행하는 여러 SQL 쿼리를 하나의 동적 SQL 쿼리로 통합할 수 있습니다. 예를 들어, 특정 조건에 따라 여러 개의 SELECT 쿼리를 작성하는 대신, 동적 SQL을 사용하여 하나의 SELECT 쿼리를 작성할 수 있습니다. 이는 코드의 가독성과 유지 관리성을 높이며, 실수를 줄여줍니다. 

 

또한, 동적 SQL은 성능 최적화에도 도움이 될 수 있습니다. 예를 들어, 사용자의 입력에 따라 필요한 조건만 쿼리에 포함시키므로 불필요한 데이터를 조회하지 않고, 데이터베이스 서버의 부하를 줄일 수 있습니다. 

 

[예제]

<select id="selectUsers" parameterType="com.example.UserSearch" resultMap="UserResult">
    SELECT * FROM Users
    <if test="name != null">
        WHERE name = #{name}
    </if>
    <if test="email != null">
        AND email = #{email}
    </if>
    <if test="age != null">
        AND age = #{age}
    </if>
</select>


이 예제에서는 사용자의 이름, 이메일, 나이에 따라 검색 쿼리가 동적으로 변경됩니다. 사용자가 입력한 조건만 쿼리에 포함되므로, 불필요한 데이터 조회를 줄이고 성능을 최적화할 수 있습니다.

 

요약하면, 동적 SQL은 프로그래밍의 유연성을 높이고, 코드 중복을 줄이며, 성능을 최적화하는 등의 장점이 있습니다. 따라서 동적 SQL은 데이터베이스와 상호작용하는 다양한 프로그래밍 상황에서 유용하게 사용될 수 있습니다.

 


4.2. 동적 SQL 기본 구조

동적 SQL은 SQL 문을 런타임에 동적으로 생성하거나 수정하는 기술입니다. MyBatis는 동적 SQL을 사용하여 데이터베이스 쿼리를 효율적으로 작성하고 관리할 수 있게 해주는 여러 태그를 제공합니다. 이러한 동적 SQL은 조건에 따라 다른 쿼리를 생성하거나, 반복적인 작업을 줄이거나, 복잡한 쿼리를 간단하게 만드는 데 유용합니다.

4.2.1. 동적 SQL 작성 규칙

동적 SQL을 작성할 때는 다음과 같은 규칙을 기억해야 합니다.

  • SQL 명령어와 MyBatis 태그 사이에는 공백을 포함해야 합니다. 이렇게 하면 SQL이 올바르게 파싱 될 수 있습니다.
  • MyBatis 태그는 항상 닫아야 합니다. 모든 태그는 닫는 태그(/)로 끝나야 합니다.
  • 동적 SQL은 복잡성을 증가시킬 수 있으므로, 가능하면 쿼리를 간결하게 유지하고, 쿼리의 동작을 이해하는 데 도움이 되도록 주석을 포함하는 것이 좋습니다.

 

4.2.2. 기본적인 동적 SQL 구조 예시

MyBatis의 동적 SQL은 다양한 구조를 가지고 있습니다. 각 태그가 어떻게 작동하는지 이해하려면 실제 예제를 통해 살펴보는 것이 가장 좋습니다. 이번 섹션에서는 if, choose, trim, where, set 태그에 대한 예제를 살펴보며, 동적 SQL의 구조를 이해하는 데 도움이 될 것입니다.

 

[if 태그 예제]

if 태그는 특정 조건이 충족될 때 SQL 구문을 추가하는 데 사용됩니다. 예를 들어, 사용자가 특정 이름을 입력했을 때만 이름으로 검색하도록 하고 싶다면 다음과 같이 사용할 수 있습니다.

 

[예제]

<select id="findUserByName" parameterType="map" resultType="User">
    SELECT * FROM User
    WHERE 1 = 1
    <if test="name != null">
        AND name = #{name}
    </if>
</select>


위의 쿼리에서는 사용자가 입력한 이름(name)이 null이 아닌 경우에만 AND name = #{name} 구문이 SQL 쿼리에 포함됩니다.

[choose, when, otherwise 태그 예제]

choose, when, otherwise 태그는 Java의 switch-case 구문과 유사한 역할을 합니다. 여러 조건 중 하나를 선택하여 SQL 구문을 추가할 수 있습니다. 예를 들어, 사용자가 검색 조건으로 이름(name), 이메일(email), 아이디(id) 중 하나를 선택했다고 가정해 봅시다.

 

[예제]

<select id="findUser" parameterType="map" resultType="User">
    SELECT * FROM User
    WHERE 1 = 1
    <choose>
        <when test="name != null">
            AND name = #{name}
        </when>
        <when test="email != null">
            AND email = #{email}
        </when>
        <otherwise>
            AND id = #{id}
        </otherwise>
    </choose>
</select>

 

위의 쿼리에서는 name, email, id 중에서 하나를 선택하여 검색 조건을 추가합니다.

 

[trim, where, set 태그 예제]

trim, where, set 태그는 SQL 구문을 보다 깔끔하게 만들어주는 역할을 합니다. 예를 들어, trim 태그는 불필요한 문자를 제거하고, where와 set 태그는 적절한 위치에 WHERE와 SET 키워드를 추가합니다. 아래 예제에서는 사용자의 정보를 업데이트하는 쿼리를 살펴보겠습니다.

 

[예제]

<update id="updateUser" parameterType="User">
    UPDATE User
    <set>
        <if test="name != null">
            name = #{name},
        </if>
        <if test="email != null">
            email = #{email},
        </if>
        <if test="password != null">
            password = #{password}
        </if>
    </set>
    WHERE id = #{id}
</update>

 

위의 쿼리에서는 set 태그 안에 if 태그를 사용하여, name, email, password 중 null이 아닌 필드만 업데이트합니다. 이 방식으로, 필요한 필드만 동적으로 업데이트할 수 있습니다.

 

[예제]

<select id="selectUser" parameterType="User">
SELECT * FROM User
<WHERE>
<if test="name != null">
     name = #{name}
  </if>
      <if test="email != null">
          email = #{email},
      </if>
      <if test="password != null">
          password = #{password}
      </if>
</WHERE>
</select>


위의 쿼리에서는 where 태그 안에 if 태그를 사용하여, name, email, password 중 null이 아닌 필드만 조회합니다. 이 방식으로, 필요한 필드만 동적으로 조회조건으로 할 수 있습니다.

이처럼 MyBatis의 동적 SQL은 다양한 태그를 조합하여 복잡한 SQL 쿼리를 간결하고 효과적으로 작성할 수 있게 도와줍니다. 예제를 통해 각 태그의 기본적인 사용법을 살펴보았지만, 실제로는 이들을 다양한 방식으로 조합하여 사용할 수 있습니다. 태그의 사용법을 이해하고 적절한 상황에 맞게 활용하면, 효율적인 SQL 쿼리를 작성하는 데 큰 도움이 될 것입니다.

 


4.3. 동적 SQL 활용 예제

MyBatis는 동적 SQL을 지원합니다. 동적 SQL이란 실행 시점에 SQL 쿼리가 결정되는 것을 말합니다. 이는 if, choose, foreach 등의 태그를 활용하여 구현할 수 있습니다. 이번 섹션에서는 if 태그를 이용한 동적 SQL 활용 예제에 대해 알아보겠습니다. 

 


4.3.1. if 사용법

if 태그는 동적 SQL 작성을 위한 강력한 도구입니다. SQL 쿼리의 특정 부분을 조건적으로 포함시킬 수 있게 해 주며, 이는 사용자의 입력이나 특정 상황에 따라 쿼리를 유연하게 변경할 수 있게 해 줍니다.

 

4.3.1.1. if 태그의 역할

if 태그는 특정 조건이 참일 때만 SQL 구문을 포함시키는 역할을 합니다. 즉, if 태그 안에 작성된 SQL 구문은 해당 태그의 조건이 만족할 때만 실행됩니다.

 

4.3.1.2. if 태그 활용 예시

가령, 사용자의 이름과 이메일 주소를 기반으로 사용자를 검색하는 SQL 쿼리를 작성한다고 가정해봅시다. 사용자는 이름, 이메일 주소, 또는 둘 다를 제공할 수 있습니다. 이 경우, if 태그를 사용하여 동적으로 쿼리를 생성할 수 있습니다.

 

매퍼 파일에서 다음과 같이 쿼리를 작성할 수 있습니다.

[예제]

<select id="findUser" parameterType="map" resultType="User">
    SELECT * FROM User
    WHERE 1 = 1
    <if test="name != null">
        AND name = #{name}
    </if>
    <if test="email != null">
        AND email = #{email}
    </if>
</select>

 

여기서 test 속성은 조건을 정의하며, 해당 조건이 참일 경우에만 안에 있는 SQL 구문이 실행됩니다. 예를 들어, 사용자가 이름만 제공한 경우에는 첫 번째 if 태그의 조건이 참이 되어 AND name = #{name} 구문이 포함됩니다. 반면, 이메일 주소는 제공되지 않았으므로 두 번째 if 태그의 조건은 거짓이 되어 AND email = #{email} 구문은 포함되지 않습니다.

 

이렇게 if 태그를 활용하면 사용자의 입력에 따라 동적으로 쿼리를 생성할 수 있습니다. 이는 코드의 유연성을 높여주며, 중복 코드를 줄이는 데도 도움이 됩니다.

 

4.3.2. choose 사용법

choose 태그는 MyBatis의 동적 SQL에서 중요한 역할을 하는 태그입니다. 이 태그는 SQL 쿼리 내부에서 조건에 따라 다른 코드를 실행하게 하는 기능을 수행합니다. SQL 쿼리 작성 시에 동적으로 변경되어야 하는 부분을 choose 태그로 감싸고, 그 안에 조건과 그에 해당하는 쿼리를 작성하면 됩니다.

 

4.3.2.1. choose 태그의 역할

choose 태그는 마이바티스의 강력한 동적 SQL 기능 중 하나입니다. 이름에서 알 수 있듯이, 이 태그는 여러 개의 선택지 중에서 하나를 선택하는 역할을 합니다. 마치 자바의 switch 문이나 if-else if-else 구조를 생각하시면 이해가 편하실 것입니다. 

 

choose 태그는 when과 otherwise 태그와 함께 사용됩니다. when 태그는 조건을 검사하고, 그 조건이 참인 경우에 해당하는 SQL 코드를 실행합니다. 만약 when 태그의 조건이 모두 거짓이라면 otherwise 태그의 SQL 코드가 실행됩니다. 즉, otherwise 태그는 when 태그의 조건이 모두 만족하지 못했을 때의 기본적인 동작을 정의합니다. 

 

4.3.2.2. choose 태그 활용 예시

첫 번째 예시로 간단한 사용자 조회 SQL을 생각해 보겠습니다. 사용자 이름과 이메일 두 가지 조건 중 하나를 선택하여 사용자를 조회하는 경우입니다. 이를 choose 태그를 활용하여 표현해 보면 아래와 같습니다.

 

[예제]

<select id="selectUser" parameterType="map" resultType="User">
  SELECT * FROM User
  <where>
    <choose>
      <when test="name != null">
        name = #{name}
      </when>
      <when test="email != null">
        email = #{email}
      </when>
    </choose>
  </where>
</select>


이 예시에서는 사용자 이름과 이메일 중 하나를 선택하여 검색하는 경우를 나타내고 있습니다. when 태그의 test 속성에는 조건식을 작성하며, 이 조건이 참일 경우 해당 when 태그 안의 SQL 코드가 실행됩니다.

 

하지만, 실제 상황에서는 조건이 더 복잡해질 수 있습니다. 예를 들어 사용자가 이름, 이메일, 전화번호를 모두 입력할 수 있지만, 그중에서 하나만 선택하여 검색하는 경우를 처리해야 한다고 가정해 봅시다. 이런 경우에는 choose 태그를 활용하여 아래와 같이 표현할 수 있습니다.

 

 

[예제]

<select id="findUser" parameterType="UserSearch" resultType="User">
    SELECT * FROM User
    <where>
        <choose>
            <when test="name != null and email == null and phone == null">
                name = #{name}
            </when>
            <when test="email != null and name == null and phone == null">
                email = #{email}
            </when>
            <when test="phone != null and name == null and email == null">
                phone = #{phone}
            </when>
            <otherwise>
                id = #{id}
            </otherwise>
        </choose>
    </where>
</select>


이 예시에서는 이름, 이메일, 전화번호 중 하나만 선택하여 사용자를 검색하며, 그 어떤 조건도 충족되지 않을 때는 id로 검색을 수행합니다. 이렇게 <choose>, <when>, <otherwise> 태그를 이용하면 다양한 조건에 따른 동적 SQL을 손쉽게 작성할 수 있습니다.

 

<choose> 태그는 복잡한 조건을 갖는 SQL 쿼리를 작성할 때 효율적으로 사용할 수 있는 도구입니다. 하지만, 항상 그렇듯이 적절한 사용이 중요합니다. 필요 이상으로 복잡한 조건을 처리하려고 하면 오히려 가독성이 떨어질 수 있습니다. 따라서 간단한 조건은 if 태그를, 복잡한 여러 조건을 처리해야 할 때는 <choose> 태그를 활용하는 것이 효율적일 것입니다.

 

4.3.3. foreach 사용법

'foreach' 태그는 마이바티스의 동적 SQL 생성 기능 중 하나로, 컬렉션의 각 요소에 대해 반복하면서 동적인 SQL 조각을 생성하는데 사용됩니다. 이는 특히 컬렉션의 크기나 내용이 런타임에 결정되는 경우에 유용합니다.

 

4.3.3.1. foreach 태그의 역할

'foreach' 태그는 SQL 쿼리에 반복적인 요소를 적용할 때 사용됩니다. 예를 들어, 여러 개의 항목에 대한 조회 쿼리를 작성하거나, 여러 개의 항목을 한 번에 삽입하거나 업데이트하려는 경우에 사용할 수 있습니다.

 

'foreach' 태그는 또한 여러 값을 SQL 쿼리의 IN 절에 넣을 때 유용하게 사용됩니다. IN 절은 주어진 값들 중 하나라도 일치하는 데이터를 검색할 때 사용하는 SQL 구문입니다. 마이바티스에서는 'foreach'를 사용하여 이러한 IN 절을 동적으로 생성할 수 있습니다.

 

4.3.3.2. foreach 태그 활용 예시

아래의 예시는 'foreach' 태그를 사용하여 여러 ID에 해당하는 사용자를 한 번의 쿼리로 조회하는 방법을 보여줍니다.

 

[예제]

<select id="selectUsersIn" resultType="User">
    SELECT * FROM user
    WHERE id IN
    <foreach item="userId" index="index" collection="userIds" open="(" close=")" separator=",">
        #{userId}
    </foreach>
</select>

 

이 쿼리는 'userIds'라는 이름의 컬렉션을 통해 여러 'userId'를 IN 절에 넣습니다. 'userIds' 컬렉션은 자바 코드에서 다음과 같이 매개변수로 넘겨줄 수 있습니다.

 

[예제]

List<Integer> userIds = Arrays.asList(1, 2, 3);
Map<String, Object> params = new HashMap<>();
params.put("userIds", userIds);
List<User> users = sqlSession.selectList("selectUsersIn", params);


이렇게 'foreach'를 활용하면 다양한 경우에 대응하는 동적 SQL을 작성할 수 있습니다. 또한 이는 코드의 중복을 최소화하고 유지보수를 용이하게 해 줍니다.

 

'foreach' 태그는 SQL 쿼리의 동적 생성에 있어서 중요한 역할을 하는 동시에, SQL의 복잡성을 줄이고 코드의 가독성을 높이는 장점도 가지고 있습니다.

 

[다양한 'foreach' 태그의 사용법]

  • 다수의 레코드를 삽입하는 경우: 'foreach' 태그는 여러 레코드를 한 번에 삽입하는 데에도 사용될 수 있습니다. 아래의 예시를 살펴봅시다.

[예제]

<insert id="insertUsers">
    INSERT INTO user (id, name, email)
    VALUES
    <foreach item="user" index="index" collection="users" open="" separator="," close="">
        (#{user.id}, #{user.name}, #{user.email})
    </foreach>
</insert>

 

이 예시에서는 'users'라는 이름의 컬렉션을 사용하여 여러 사용자 정보를 한 번에 삽입합니다. 각 'user' 항목은 'id', 'name', 'email' 필드를 가집니다. 이런 방식으로 'foreach' 태그를 사용하면, 한 번의 쿼리로 다수의 레코드를 삽입하는 것이 가능해집니다.

 

  • 조건에 따른 동적 쿼리 생성: 'foreach' 태그는 조건에 따라 동적으로 쿼리를 생성하는 데에도 사용될 수 있습니다. 다음 예시는 여러 조건에 따라 사용자를 검색하는 쿼리를 작성하는 방법을 보여줍니다.

 

[예제]

<select id="selectUsersByConditions" resultType="User">
    SELECT * FROM user
    WHERE
    <foreach item="condition" index="index" collection="conditions" open="" close="" separator="AND">
        ${condition.column} = #{condition.value}
    </foreach>
</select>


이 쿼리는 'conditions'라는 이름의 컬렉션을 사용하여 여러 조건을 동적으로 생성합니다. 각 'condition' 항목은 'column'과 'value' 필드를 가지며, 이를 사용하여 SQL 조건절을 생성합니다. 이렇게 하면, 다양한 조건에 따라 유연하게 쿼리를 생성할 수 있습니다. 

 

4.3.4. <trim>, <where>, <set> 사용법

이 세 가지 태그는 MyBatis의 동적 SQL을 구성하는 핵심 요소입니다. <trim> 태그는 쿼리의 특정 부분을 잘라내거나 대체하는 데 사용되며, <where> 태그는 동적으로 WHERE 절을 작성하는 데 사용되며, 마지막으로 <set> 태그는 UPDATE 쿼리에서 SET 절을 동적으로 작성하는 데 사용됩니다. 

 

4.3.4.1. trim 태그의 역할

<trim> 태그는 SQL의 일부를 동적으로 생성할 때 사용합니다. <trim> 태그를 사용하면 SQL문의 앞뒤에 특정 문자열을 추가하거나 제거할 수 있습니다. 이는 특정 조건에 따라 쿼리의 일부가 생략될 경우, 그로 인해 발생하는 구문 오류를 방지하는 데 도움이 됩니다. <trim> 태그는 prefix, prefixOverrides, suffix, suffixOverrides 네 가지 속성을 가지고 있습니다. 

 

4.3.4.2. trim 태그 활용 예시

[예제]

<update id="updateUser">
  UPDATE user
  <trim prefix="SET" suffixOverrides=",">
    <if test="name != null">name = #{name},</if>
    <if test="email != null">email = #{email},</if>
  </trim>
  WHERE id = #{id}
</update>

 

위의 예제에서는 <trim> 태그를 이용해 SET 절을 동적으로 생성하고 있습니다. prefix 속성에 SET을 설정함으로써, <trim> 태그 내부의 내용이 존재할 경우 SET이라는 접두사를 추가합니다. 그리고 suffixOverrides=","는 마지막에 붙는 불필요한 쉼표를 제거합니다. 

 

4.3.4.3. where 태그의 역할

<where> 태그는 SQL의 WHERE 절을 동적으로 생성하는 데 사용됩니다. <where> 태그 내부에 있는 조건들 중 true인 조건들만 WHERE 절에 포함됩니다. 또한 <where> 태그는 자동으로 첫 번째 Boolean 연산자 (예: AND, OR)를 제거하여 SQL 구문 오류를 방지합니다. 

 

4.3.4.4. where 태그 활용 예시

[예제]

<select id="selectUser" resultType="User">
  SELECT * FROM user
  <where>
    <if test="name != null">AND name = #{name}</if>
    <if test="email != null">AND email = #{email}</if>
  </where>
</select>


위의 예제에서는 <where> 태그를 사용하여 이름과 이메일이 null이 아닌 경우에만 WHERE 절에 조건을 추가하고 있습니다. 첫 번째 조건 앞의 'AND'는 <where> 태그가 자동으로 제거해줍니다. 

 

4.3.4.5. set 태그의 역할

<set> 태그는 UPDATE 쿼리에서 SET 절을 동적으로 작성하는 데 사용됩니다. <set> 태그를 사용하면 조건에 따라 여러개의 칼럼을 동적으로 업데이트할 수 있습니다. <set> 태그 내부에 있는 조건들 중 true인 조건들만 SET 절에 포함됩니다. 마찬가지로 <set> 태그는 마지막에 붙는 불필요한 쉼표를 자동으로 제거하여 SQL 구문 오류를 방지합니다. 

 

4.3.4.6. set 태그 활용 예시

[예제]

<update id="updateUser">
  UPDATE user
  <set>
    <if test="name != null">name = #{name},</if>
    <if test="email != null">email = #{email},</if>
  </set>
  WHERE id = #{id}
</update>


이 예제에서는 <set> 태그를 사용하여 name과 email 필드가 null이 아닌 경우에만 해당 필드를 업데이트합니다. 이렇게 하면 불필요한 업데이트를 방지하고 SQL 구문을 최적화할 수 있습니다. 

 

이러한 방식으로 <trim>, <where>, <set> 태그를 사용하면 동적 SQL을 더욱 효과적으로 작성할 수 있습니다. 각 태그는 SQL 구문을 동적으로 조작하는 강력한 도구이며, MyBatis에서 제공하는 다른 동적 SQL 태그와 함께 사용하면 더욱 풍부한 SQL 쿼리를 작성할 수 있습니다. 

 

 

 

 

2023.05.16 - [GD's IT Lectures : 기초부터 시리즈/마이바티스(MyBatis) 기초부터 ~] - [마이바티스(MyBatis)] SQL 매핑 파일 작성

 

[마이바티스(MyBatis)] SQL 매핑 파일 작성

Chapter 3. SQL 매핑 파일 작성 마이바티스의 핵심 기능 중 하나는 SQL 매핑입니다. 이 장에서는 마이바티스의 SQL 매핑 파일 작성 방법에 대해 상세하게 설명합니다. SQL 매핑 파일은 객체와 SQL 쿼리

gdngy.tistory.com

 

반응형

댓글