Programming
[Mybatis] For input string 에러
BTC_아리
2024. 1. 17. 17:00
베하!
안녕하세요 여러분! 일단고 팀입니다.
오늘은 개발을 진행하다가 겪은 에러에 대해서 공유하고자 합니다.

에러 발생 상황
Mybatis 쿼리문을 작성하던 상황이었습니다.
예시 :
SELECT a.id
, a.name
FROM user a
WHERE 1=1
<if test="delFilter.equals('Y')">
AND a.del = 'Y'
</if>
테스트를 진행하니 다음과 같은 에러가 나왔습니다.
### Error querying database. Cause: java.lang.NumberFormatException: For input string: ”Y"
### Cause: java.lang.NumberFormatException: For input string: "Y"
에러 원인
이 에러에 대한 내용은 ‘Y’라는 문자열을 숫자로 변환하려 하는데, 숫자로 변환하니 mybatis 쿼리문에서 의도한 결과가 나오지 않고 에러가 나오는 겁니다.
좀 더 정확하게 이야기하자면, Y라는 문자열이 ‘(single quotation)으로 작성되어 있어서 문자형이 아닌 숫자형으로 인식하여 발생한 문제입니다.
에러 해결방법
1. double quotation 사용하기
- 쿼테이션의 위치를 변경하면 Y 문자가 double quotation에 들어가게 되어 문자열로 인식합니다.
SELECT a.id
, a.name
FROM user a
WHERE 1=1
<if test='delFilter.equals("Y")'>
AND a.del = 'Y'
</if>
2. equals 사용하기
- equals를 사용하면 문자열로 인식합니다.
SELECT a.id
, a.name
FROM user a
WHERE 1=1
<if test='"Y".equals(delFilter)'>
AND a.del = 'Y'
</if>
처음보는 에러라 당황하셨을 수 있지만 알고나면 문제의 원인도 명확하고 간단하게 해결할 수 있는 문제였습니다!
즐거운 코딩합시다~!
베빠!!
