본문 바로가기
일이야기/Spring

mybatis에서 NumberformatException 처리

by Cloud9™ 2020. 7. 1.

java.lang.NumberFormatException: For input string: “Y” 

 

### Error querying database. Cause: java.lang.NumberFormatException: For input string: “Y”
### Cause: java.lang.NumberFormatException: For input string: “Y”

 

Map<String, Object> dataMap = new HashMap<>();
dataMap.put("useYN", "Y");
. .
dummyMapper.getData(dataMap);

 

서비스에서 useYN값을 Y로 셋팅하고 Mapper를 호출하였는데 왠걸...

mybatis 에서 NumberformatException 에러를 내고 있다.

그것도 "Y" 라는 문자는 비교문에 쓴 거 하나 밖에 없는데... (미친거니??)

 

<select id="getData">
..
<if test="useYn =='Y'">...</if> 
..
</select>

 

잠시 생각해보니 문자열 하나는 char 타입이고 char는 아스키 값으로 변환되고...

구글링해보니 역시는 역시였다.

 

문자열 하나만 입력했더니 해당 비교문에서 Y를 char 형으로 인식하고

아스키 값으로 비교하려고 에러를....

 

인터넷을 찾아보니 해결 방법은 3가지가 있는 것 같다.

 

1. 홑따옴표와 쌍따옴표의 위치를 바꾼다. ===> <if test='useYN == "Y"'> 

 

2. 쌍따옴표를 html escape 문자처리 한다. ===> <if test="useYN == &quot;Y&quot;">

 

3. toString() 함수로 String 변환한다. ===> <if test="useYN == 'Y'.toString()">

 

셋 중 자신의 기호에 맞는 코드를 사용하면 된다.

 

댓글