오늘은 Mybatis를 사용하면서 당황할 수 있는 예제를 설명 드립니다. 


xml 을 작성할 경우 if 문을 사용할 떄 java.lang.NumberFormatException이 발생하는 경우가 있습니다. 


버그인지 모르겠으나 비교대상이 1자리 일 경우 해당 에러가 발생합니다. 


예를 들어보겠습니다. 


select

       col01,col02,col03,col03 ......

        ....

   from dummytable

where 1=1

<if test="compare_col =' '  and  compare_col != 'A'">

   and col2 = #{compare_col}

</if> 


위의 예시와같이 ' ' 혹은 'A' 같은경우 즉 1자리의 텍스트의 경우  java.lang.NumberFormatException 이 발생하고는 합니다.


해결방법은 


<if test='compare_col =" "  and  compare_col != "A"' >


test의 값을  ''로 감싸고 각 값들을 ""로 사용할경우 해당 Error을 피할 수 있습니다


다른방법도 있습니다. 'A'.toString() 으로 변경하여 사용하셔도 됩니다만 저는 전자의 경우가 더 편하기떄문에 ""로 변경하는것을 추천드립니다. 



+ Recent posts