본문 바로가기

1.프로그래밍/DB

[MyBatis] org.apache.ibatis.binding.BindingException: Parameter 'userName' not found. Available parameters are [arg1, arg0, param1, param2] MyBatis 에러

728x90
반응형

[MyBatis] org.apache.ibatis.binding.BindingException: Parameter 'userName' not found. Available parameters are [arg1, arg0, param1, param2] MyBatis 에러

[org.apache.ibatis.binding.BindingException:](org.apache.ibatis.binding.bindingexception:) Parameter 'userName' not found. Available parameters are [arg1, arg0, param1, param2]

갑자기 잘 쓰던 문법에서 에러가 나타났다.

** BoardMapper.interface **

    int registerBoard(String userName, String title,String content);

** BoardMapper.xml **

<insert id="registerBoard">
        INSERT INTO Board (userName, title, content)
        VALUES (#{userName}, #{title}, #{content})
</insert>

위와 같이 사용하고 있었는데, 갑자기 파라미터를 제대로 인식하지 못하는 에러가 발생하였다.


구글링 결과 @Param() 이라는 iBatis의 Annotation을 파라미터에 명시적으로 달아주면 MyBatis가 파라미터를 제대로 인식 할 수 있다고 한다.

바꾼 후

** BoardMapper.interface **

    int registerBoard(@Param("userName") String userName, @Param("title") String title, @Param("content") String content);

** BoardMapper.xml **

<insert id="registerBoard">
        INSERT INTO Board (userName, title, content)
        VALUES (#{userName}, #{title}, #{content})
</insert>

이렇게 변경 후 문제 없이 작동 하였다.
그런데 모든 Mapper의 파라미터에 해당 에노테이션을 달아야 되는건지는 아직 잘 모르겠다...

728x90
반응형