MyBatis는 자바 객체와 SQL 문 사이의 매핑을 쉽게 처리해주는 ORM(Object-Relational Mapping) 프레임워크입니다. MyBatis를 사용할 때 파라미터를 효과적으로 처리하는 방법에 대해 알아보겠습니다.
1. 단일 파라미터 전달
만약 SQL 문에 한 개의 파라미터만 필요하다면, 해당 파라미터를 직접 전달할 수 있습니다. 예를 들어, 아래와 같은 SQL 문이 있다고 가정해봅시다.
SELECT * FROM users WHERE id = #{userId}
Java 코드에서는 다음과 같이 파라미터를 전달할 수 있습니다.
@Selelct("SELECT * FROM users WHERE id = #{userId}")
User getUserById(int userId);
2. 여러 개의 파라미터 전달
SQL 문에 여러 개의 파라미터가 필요할 때는, 자바에서 객체를 생성하여 파라미터 값을 넘겨줄 수 있습니다. 예를 들어, 아래와 같은 SQL 문이 있다고 가정해봅시다.
INSERT INTO users (name, age) VALUES (#{name}, #{age})
Java 코드에서는 다음과 같이 객체를 생성하여 파라미터를 전달할 수 있습니다.
@Insert("INSERT INTO users (name, age) VALUES (#{user.name}, #{user.age})")
void insertUser(@Param("user") User user);
3. 동적 쿼리 처리
MyBatis는 동적 쿼리를 처리하기 위한 다양한 기능을 제공합니다. 예를 들어, WHERE 절이나 SET 절에서 조건에 따라 쿼리를 동적으로 조합할 수 있습니다. 이를 위해 MyBatis에서는 <if>, <choose>, <when>, <otherwise> 등의 태그를 사용합니다.
아래의 예제는 User
객체를 검색 조건으로 사용하여 동적 쿼리를 작성하는 방법을 보여줍니다.
@Select({
"<script>",
"SELECT * FROM users",
"WHERE 1=1",
"<if test='name != null'>",
"AND name = #{name}",
"</if>",
"<if test='age != null'>",
"AND age = #{age}",
"</if>",
"</script>"
})
List<User> searchUsers(@Param("name") String name, @Param("age") Integer age);
위 예제에서는 name
과 age
파라미터에 따라 동적으로 쿼리를 생성하고 있습니다. name
파라미터가 null이 아니면 AND name = #{name}
부분이 추가되고, age
파라미터가 null이 아니면 AND age = #{age}
부분이 추가됩니다.
결론
MyBatis에서 파라미터를 처리하는 방법을 살펴보았습니다. 단일 파라미터, 여러 개의 파라미터, 그리고 동적 쿼리 처리까지 다양한 방법을 사용할 수 있습니다. MyBatis를 효과적으로 사용하여 데이터베이스와의 상호작용을 간단하게 처리할 수 있습니다.
더 많은 정보를 원하시면 MyBatis 공식 문서를 참고해보세요.
- MyBatis 공식 문서: 링크
이 글은 [Tech Blog]에서 작성된 글입니다.