반응형
java.lang.NumberFormatException: For input string: "Y"
There was an unexpected error (type=Internal Server Error, status=500).
nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.NumberFormatException: For input string: "Y" ### Cause: java.lang.NumberFormatException: For input string: "Y"
MyBatis에서 if문 사용 중 위와 유사한 에러가 발생하는 경우가 있다.
Number 관련해서 선언한 적도 없고, 테이블 칼럼 값도 number가 아니고, 해당 칼럼 관련하여 number 관련된 건 아무것도 없는데 뜬금없이 저런 오류가 떠서 😵😵
For input string: ""와 같이 뜨는 경우는 String 인자 값에 null 값이 올 때라고 한다.
위의 오류처럼 Y라는 문자 값을 넣었음에도 불구하고 해당 에러가 발생하는 이유는 형 변환 문제가 맞긴 하다.
MyBatis에서는 작은따옴표(') 안에 입력한 하나의 문자는 문자열로 취급되지 않는다.
(오류를 보면 Number로 인식되는 거 같은데 그럼 아스키코드로 치환되려나)
따라서 Y, N과 같은 한 개의 문자를 문자열로 인식시키려면 큰 따옴표(")로 감싸주어야 한다.
<!-- 오류 발생 -->
<if test="str != null and str != 'Y'">
...
</if>
<!-- 올바른 코드 -->
<if test='str != null and str != "Y"'>
...
</if>
반응형