Mybatis에서 resultType="java.util.LinkedHashMap"
으로 아래와 같은 데이터를 받아옴
[{DT=2022-07-01, COUNT=0}, {DT=2022-07-02, COUNT=0}, ...]
DT는 날짜(String), COUNT는 숫자(integer)로 각각 나눠서 List에 담으려고 했으나 에러 발생.
List<HashMap<String,Object>> post = chartService.getPostInfo();
List<String> postDate = new ArrayList<>();
List<Integer> postCount = new ArrayList<>();
System.out.println(post);
for(int i=0;i<post.size();i++) {
postDate.add((String) post.get(i).get("DT"));
postCount.add((Integer) post.get(i).get("COUNT")));
}
PostDate는 정상적으로 데이터가 들어갔으나, postCount에서 값이 들어가지 않고 있었음.
post.get(i).get("COUNT").getClass().getName()
으로 타입을 검사해보니 java.math.bigdecimal이 출력됨. 때문에 Integer로 형변환이 되지 않아 에러가 발생했던 것.
아래와 같이 소스를 고쳐서 수정 완료.
for(int i=0;i<post.size();i++) {
postCount.add(Integer.parseInt(String.valueOf(post.get(i).get("COUNT"))));
}