Language/NoSQL&JDBC

[Ibatis] There is no getter for property named 'msgid' in 'class java.lang.String'

아르비스 2013. 6. 11. 10:03

ibatis 에서 select 시에 다음과 같이 error가 발생하는 경우


There is no getter for property named 'msgid' in 'class java.lang.String'


<select id="selectMsgIdByOriginMsgId" parameterType="java.lang.String" resultMap="saOutgoingMsgLogMap">

   <![CDATA[

    SELECT * FROM SA_OUTGOINGMSGLOG WHERE MSGID LIKE '%${msgid}%'

   ]]>

</select>


like 문에  '%${msgid}% 이 없으면,  이상없이 잘 실행된다는거.


이유는

if문에서 name을 가져오는 방식이 parameterType 안에 들어있는 클래스에서

getter 메소드로 name을 받아오기 때문이다.


즉, 에러 그대로 String 객체에 name을 뱉어주는 getter 메소드가 없기 때문이다.

Integer를 넘기거나 Long을 넘긴 사람이라면 다들 안됐을 것이다.


이 경우 parameterType을 Map으로 변경하여, 적용하면 된다.


   <select id="selectMsgIdByOriginMsgId" parameterType="java.util.Map" resultMap="saOutgoingMsgLogMap">

<![CDATA[

    SELECT * FROM SA_OUTGOINGMSGLOG WHERE MSGID LIKE '%${msgid}%'

   ]]>

</select>