Java/SpringBoot

@Param

dev.jelee 2024. 10. 28. 14:44

생각

  • Mapper에서 @Param 어노테이션을 사용하여 값을 xml로 전달한다고는 이해하고 있는데 정확히 알지는 못하여서 정리하고자 글을 작성한다.

 

@Param

  • MyBatis에서의 @Param은 SQL 쿼리에서 사용하는 파라미터를 지정하는데 사용된다.
  • 여러 개의 파라미터를 메소드에 전달할 때 각각의 파라미터에 이름을 붙여 SQL 쿼리에서 사용할 수 있게 한다.

예시 1

// Controller 예시
public interface UserMapper {
    User getUser(@Param("id") int id, @Param("name") String name);
}
// xml 예시
<mapper namespace="cohttp://m.mysite.mapper.UserMapper">
    <select id="getUser" parameterType="map" resultType="cohttp://m.mysite.dto.User">
        SELECT * FROM user_table WHERE id = #{id} AND name = #{name}
    </select>
</mapper>



예시 2

// Controller 예시2
public interface UserMapper {
    @Select("SELECT * FROM users WHERE id = #{id} AND name = #{name}")
    User getUser(@Param("id") int id, @Param("name") String name);
}

 

  • 예시 2는 별도로 .xml 작성하지 않고 Controller에서 사용해도 되는 거 같음.