2018년 6월 19일 화요일

mybatis에서 if 조건문 사용시 자동 형변환으로 인한 오류 대처

상황 :

mybatis에서 <if>태그로 조건을 적용하던 중 아래와 같은 오류가 발생함
Invalid character found in method name. HTTP method names must be tokens

오류가 난 부분은 다음과 같다.
<if test="tdiDay != '0'">
AND TDI_DAY IN (#{tdiDay})
</if>

이 코드에서 넘겨받은 값 tdiDay는 0 또는 문자열이다.

해결 :

이 오류의 원인은 tdiDay를 조건으로 사용할때 데이터형 자동 변환으로 인한 문제였다
이 경우 자동 형변환이 되지 않도록 아래와 같이 조건문을 처리하여 해결하였다

<if test="tdiDay != '0'.toString()">
AND TDI_DAY IN (#{tdiDay})
</if>