안녕하세요
mybatis 사용시 dynamic 쿼리 조건에 String 타입을 넣었는데 java.lang.NumberFormatException: For input string: "값" 에러가 날때 해결 방법입니다.
1. String condition을 던지는경우
String condition = "A";
sampleMapper.selectSample(@Param("condition") String condition);
2. SampleDto를 사용하여 던지는 경우
sampleDto.setCondition("A");
sampleMapper.selectSample(SampleDto sampleDto);
위와같이 예를 들어 사용할때 String A를 던졌는데 java.lang.NumberFormatException: For input string: "A" 라고 에러가 나는 경우가 있습니다.
이때는 dynamic sql쪽을 확인해 보면 됩니다.
<if test="condition eq 'A'">
</if>
위와같이 사용하는 경우 에러가 발생합니다.
해결방법은
큰따옴표로 조건을 준 경우
첫번째로 " condition eq 'A'.toString() "으로 조건을 주면 에러가 발생하지 않습니다.
두번째로는 다음과 같이 바깥을 작은따옴표로 감싸면 됩니다.
' condition eq "A" '
감사합니다.