[java] MyBatis XML 매핑 파일 작성 방법

MyBatis는 Java 언어를 사용하여 데이터베이스와 상호 작용하는 데 사용되는 ORM(Object-Relational Mapping) 프레임워크입니다. MyBatis XML 매핑 파일은 데이터베이스 테이블과 SQL 문을 매핑하고 MyBatis가 데이터베이스와 상호 작용할 수 있도록 돕는 방법입니다. 이 문서에서는 MyBatis XML 매핑 파일을 작성하는 방법에 대해 다루겠습니다.

1. MyBatis XML 매핑 파일의 기본 구조

MyBatis XML 매핑 파일은 데이터베이스 테이블과 SQL 문을 매핑하는 데 사용됩니다. 이 파일은 일반적으로 아래와 같은 구조를 가지고 있습니다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.example.mapper">
  <!-- SQL 문과 데이터베이스 테이블을 매핑하는 구문 -->
</mapper>

위의 코드에서 mapper 엘리먼트의 namespace 속성은 매핑 파일의 네임스페이스를 지정합니다.

2. 데이터베이스 테이블과 SQL 문의 매핑

MyBatis XML 매핑 파일에서는 각각의 SQL 문에 대해 select, insert, update, delete 등의 액션을 명시하여 데이터베이스 테이블과 SQL 문을 매핑합니다. 아래는 간단한 예제입니다.

<mapper namespace="com.example.mapper">
  <select id="selectUserById" resultType="com.example.User">
    SELECT id, username, email
    FROM user
    WHERE id = #{id}
  </select>
  <insert id="insertUser" parameterType="com.example.User">
    INSERT INTO user (id, username, email)
    VALUES (#{id}, #{username}, #{email})
  </insert>
</mapper>

위의 코드에서 select, insert 엘리먼트는 각각 selectUserById, insertUser라는 고유한 ID를 갖고 있어서 식별됩니다. resultType, parameterType 속성은 각각 SELECT 문의 반환 결과 형식과 INSERT 문의 매개변수 형식을 지정합니다.

3. 동적 SQL 사용

때로는 동적 SQL이 필요할 수 있는데, MyBatis에서는 이에 대한 지원을 제공합니다. 동적 SQL을 사용하면 다양한 조건에 따라 SQL문을 동적으로 생성할 수 있습니다.

<mapper namespace="com.example.mapper">
  <select id="selectUsers" resultType="com.example.User">
    SELECT id, username, email
    FROM user
    <where>
      <if test="username != null">
        AND username = #{username}
      </if>
      <if test="email != null">
        AND email = #{email}
      </if>
    </where>
  </select>
</mapper>

위의 코드에서 <if> 엘리먼트를 사용하여 동적으로 WHERE 절을 생성하는 예제를 보여줍니다.

이것으로 MyBatis XML 매핑 파일 작성 방법에 대한 간략한 소개를 마치겠습니다. MyBatis를 사용하여 데이터베이스와 상호 작용하기 위해 보다 복잡한 매핑 및 SQL 튜닝을 하기 위해서는 MyBatis의 문서 및 사용 예제들을 참고하는 것이 좋습니다.

참고자료: