본문 바로가기

Issue 해결

[MyBatis - Spring]Parameter not found. available parameters are 오류

안녕하세요 인포돈 입니다.


* 참고사항
 - 개발환경은 Intellij을 기준으로 작성되었습니다.
 - Spring 환경에서 사용하는 MyBatis입니다.


MyBatis 인자를 인식하지 못하는 문제

 

 MyBatis를 활용하다 보면, 가끔씩 인자를 인식하지 못하는 경우가 있다. 그렇다면 어떠한 경우에 이러한 오류가 생길까? 우선 내가 접한 문제는 아래 코드에서였다.

    @Insert("""
            <script>
            INSERT INTO article
            SET createDate = NOW(),
            modifyDate = NOW(),
            subject = #{subject},
            content = #{content}
            </script>
            """)
    void write(String subject, String content);

 단순히 값을 넣어주는 코드였다. 그러나 알 수 없는 이유에서 subject의 인자를 찾을 수 없다는 오류가 계속해서 나왔다. 이를 좀만 검색해 본다면, 금방 해결할 수 있다.

 

 바로 아래 코드처럼 어노테이션을 붙여서 명확히 표현해 주면 된다. (원래 기본 FM 방식대로 작성한다면, 아래처럼 모두 작성해 주어야 하지만, #{}에서 사용하는 변수와 String subject이게 똑같이 사용된다면, 위와 같이 써도 되지만, 어느 이유에선가 안될 경우가 있다.)

    @Insert("""
            <script>
            INSERT INTO article
            SET createDate = NOW(),
            modifyDate = NOW(),
            subject = #{subject},
            content = #{content}
            </script>
            """)
    void write(@Param("subject") String subject, @Param("content") String content);

 

 그러나 나 같은 경우 이렇게 @Param을 붙여주어도, 똑같은 오류가 났다...... 정말 황당했지만, 이럴 경우는 인텔리제이에서 사용되는 캐시를 모두 삭제하고 다시 실행하면 된다.

 

 캐시 삭제 방법

 

 File -> Invalidate Cashes / Restart...

이걸 누르면 빠르게 재시작된다.