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를 사용하여 데이터베이스 연동 작업을 수행할 때 파라미터 처리 방법을 적절히 사용하여 효율적인 코드를 작성할 수 있습니다.