Mybatis dynamic query java.lang.NumberFormatException For input string 에러날때

북마크 추가

안녕하세요

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" '

감사합니다.


HKH
2019-01-25 15:43
SHARE
keyboard_arrow_left
keyboard_arrow_up