다이나믹쿼리 if문 한글자 비교 에러(NumberformatException)

2946 단어 MyBatisMyBatis

다이나믹쿼리에서 if문을 사용하는데 NumberformatException이 발생했다.

<if test="saleSta == 'S'">
  AND SALE_STA = 'S'
</if>

아무리 봐도 에러 날 곳이 없는데..

찾아보니 MyBatis에서 한글자 비교인 경우엔 'S'를 Char 형으로 인식, NumberFormat으로 비교를 시도하여 Exception이 발생한다고 한다.
MyBatis 문제는 아니고 OGNL(Object Graph Navigation Language) 의 문제라고 한다.
-- OGNL : 자바가 아닌 곳에서 자바를 쓰고 싶을 때 쓰는 언어 ex) xml에서 java 사용

해결방법

1> 더블쿼터(")와 싱글쿼터(') 위치 변경

<if test='saleSta == "S"'>
  AND SALE_STA = 'S'
</if>

2> 더블쿼터(")를 HTML 코드로 변경

<if test="saleSta == &quot;S&quot;">
  AND SALE_STA = 'S'
</if>

3> 함수 사용

<if test="saleSta == 'S'.toString()">
  AND SALE_STA = 'S'
</if>

개인적으로 1번을 추천한다 :)

좋은 웹페이지 즐겨찾기