[java] MyBatis에서 파라미터 처리 방법

MyBatis는 Java 객체와 SQL 문 사이의 매핑을 처리하는 ORM(Object-Relational Mapping) 프레임워크입니다. 파라미터 처리는 MyBatis에서 SQL 문 실행 시 필요한 값을 전달하는 방법을 의미합니다. 이번 포스트에서는 MyBatis에서 파라미터를 처리하는 방법에 대해 알아보겠습니다.

1. 단일 파라미터 전달

MyBatis에서는 간단한 값을 전달하기 위해 단일 파라미터를 사용할 수 있습니다. 다음은 단일 파라미터를 사용하는 방법의 예시입니다.

public interface UserMapper {
    public User getUserById(int userId);
}
<select id="getUserById" resultType="User">
    SELECT * FROM user WHERE id = #{userId}
</select>

위의 예시에서는 getUserById라는 메소드를 정의하고, 매개변수로 int 타입의 userId를 받습니다. XML 파일에서는 #{userId}를 사용하여 파라미터 값을 참조합니다.

2. 여러 파라미터 전달

때로는 여러 개의 값을 전달해야 할 때가 있습니다. MyBatis에서는 Map이나 도메인 객체를 사용하여 여러 파라미터를 전달할 수 있습니다. 다음은 여러 파라미터를 사용하는 방법의 예시입니다.

public interface UserMapper {
    public List<User> getUsersByAgeAndCity(Map<String, Object> parameters);
}
<select id="getUsersByAgeAndCity" resultType="User">
    SELECT * FROM user WHERE age = #{age} AND city = #{city}
</select>

위의 예시에서는 getUsersByAgeAndCity라는 메소드를 정의하고, 매개변수로 Map<String, Object> 타입의 parameters를 받습니다. XML 파일에서는 #{age}#{city}를 사용하여 파라미터 값을 참조할 수 있습니다.

3. 동적 쿼리 처리

MyBatis에서는 동적 쿼리를 쉽게 처리할 수 있습니다. 동적 쿼리는 실행 시에 조건에 따라 다른 SQL 문을 생성하는 것을 의미합니다. 다음은 동적 쿼리 처리 방법의 예시입니다.

public interface UserMapper {
    public List<User> getUsersByAgeOrCity(Map<String, Object> parameters);
}
<select id="getUsersByAgeOrCity" resultType="User">
    SELECT * FROM user
    <where>
        <if test="age != null">
            AND age = #{age}
        </if>
        <if test="city != null">
            AND city = #{city}
        </if>
    </where>
</select>

위의 예시에서는 getUsersByAgeOrCity라는 메소드를 정의하고, 매개변수로 Map<String, Object> 타입의 parameters를 받습니다. XML 파일에서는 <where> 태그와 <if> 태그를 사용하여 동적 쿼리를 생성합니다.

결론

위에서 살펴본 것처럼, MyBatis에서는 단일 파라미터와 여러 파라미터를 간단하게 처리할 수 있습니다. 동적 쿼리를 사용하면 실행 시에 조건에 따라 다른 SQL 문을 생성할 수 있어 더욱 유연한 쿼리 작성이 가능합니다. MyBatis를 사용하여 데이터베이스 연동 작업을 수행할 때 파라미터 처리 방법을 적절히 사용하여 효율적인 코드를 작성할 수 있습니다.

참고 자료