본문 바로가기

MyBatis

[MyBatis] 오라클 java.math.BigDecimal Exception

반응형

MyBatis와 오라클을 연동하여 사용하다보면 조회결과를 HashMap으로 받는 경우가 있는데, 이때 특정 컬럼의 필드가 Int, Number 와 같은 숫자형 일때 해당 데이터를 get 하여 임의 변수에 할당하는 과정에서 java.math.BigDecimal Exception 이 발생하는 경우가 종종 있다.



신기하게도 오라클에서만 발생되는 오류같아 보이는데, 이는 숫자형 데이터가 int나 Integer가 아닌 BigDecimal로 지정되어 있어 그런듯 하다.


처리하기 가장 좋은 방법은 정석대로 BigDecimal 변수를 할당하여 casting 해주면 되나,
굳이 BigDecimal 타입을 사용할 필요가 없다면 아래와 같이 String, int 형으로도 사용할 수 있다.



HashMap rsHmap = memberDao.selectMemberInfo();

// String 형으로 ..
String sAge = String.valueOf(rsHmap.get("age")) ;

// int 형으로
int iAge = Integer.valueOf(rsHmap.get("age")) ;



주의할 점으로 String.valueOf의 경우 해당 Key의 값이 null 일 경우 문자열 null로 삽입된다.