[java] Java MyBatis에서 SQL 매핑하기

MyBatis란?

MyBatis는 Java 언어용 오픈 소스 ORM(Object-Relational Mapping) 프레임워크입니다. ORM은 객체와 데이터베이스의 관계를 매핑해주는 기술로, 개발자는 SQL 쿼리를 직접 작성하지 않고도 객체를 통해 데이터베이스에 접근할 수 있습니다. MyBatis는 이러한 ORM 기술을 Java 언어로 제공하며, SQL 매핑을 통해 개발자는 쉽게 데이터베이스와 상호작용할 수 있습니다.

SQL 매핑 방법

MyBatis에서 SQL 매핑은 XML 파일을 통해 정의하거나, 어노테이션을 이용하여 Java 코드 내에서 작성할 수 있습니다. 이번 예제에서는 XML 파일을 이용한 SQL 매핑 방법을 알아보겠습니다.

1. SQL 매핑 파일 생성

먼저, SQL 매핑 파일을 생성합니다. 보통 “Mapper”라는 접미사를 사용하여 파일 이름을 작성합니다. 예를 들어, “UserMapper.xml”과 같이 명명할 수 있습니다.

2. SQL 매핑 작성

SQL 매핑 파일에는 데이터베이스에서 수행할 SQL 쿼리가 작성됩니다. 다음은 “User” 테이블에 접근하는 예제입니다.

<!-- UserMapper.xml -->

<mapper namespace="com.example.UserMapper">

    <!-- SQL 매핑 작성 -->
    <select id="getUserById" resultType="com.example.User">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <insert id="insertUser" parameterType="com.example.User">
        INSERT INTO user (id, name, email) VALUES (#{id}, #{name}, #{email})
    </insert>

    <update id="updateUser" parameterType="com.example.User">
        UPDATE user SET name = #{name}, email = #{email} WHERE id = #{id}
    </update>

    <delete id="deleteUser" parameterType="int">
        DELETE FROM user WHERE id = #{id}
    </delete>

</mapper>

위의 예제에서는 “User” 테이블과 관련된 네 가지 SQL 쿼리를 작성하였습니다.

3. 매핑 파일 등록

마지막으로, 매핑 파일을 MyBatis 설정 파일에 등록해야 합니다. 설정 파일은 일반적으로 “mybatis-config.xml”이라는 이름으로 작성됩니다.

<!-- mybatis-config.xml -->

<configuration>
    <mappers>
        <mapper resource="com/example/UserMapper.xml"/>
    </mappers>
</configuration>

위의 예제에서는 resource 속성을 사용하여 “UserMapper.xml” 파일을 등록하였습니다.

SQL 매핑 사용하기

이제 SQL 매핑을 사용하여 데이터베이스와 상호작용할 수 있습니다. MyBatis에서는 SqlSession을 사용하여 SQL 매핑을 실행합니다. 다음은 SQL 매핑을 사용하여 사용자 정보를 가져오는 예제입니다.

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisExample {

    public static void main(String[] args) {
        // MyBatis 설정 파일을 빌드하여 SqlSessionFactory 생성
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(MyBatisExample.class.getResourceAsStream("/mybatis-config.xml"));

        // SqlSessionFactory를 통해 SqlSession 생성
        try (SqlSession session = sqlSessionFactory.openSession()) {
            // SQL 매핑을 호출하여 사용자 정보 가져오기
            User user = session.selectOne("com.example.UserMapper.getUserById", 1);
            System.out.println(user);
        }
    }
}

위의 예제에서는 MyBatis 설정 파일을 빌드하여 SqlSessionFactory를 생성한 후, SqlSession을 통해 SQL 매핑을 실행하고 데이터를 가져옵니다. 매핑 파일에서 정의한 SQL 쿼리의 ID를 호출하면 해당 매핑이 실행되며, 매핑에서 정의한 결과 타입으로 데이터가 반환됩니다.

이처럼 Java MyBatis에서 SQL 매핑을 사용하여 데이터베이스와 상호작용할 수 있습니다. 자세한 내용은 MyBatis 공식 문서를 참조하시기 바랍니다.