Map proportion = uetpMeasurementReportMapper.queryEmotionMonitorProportion(reportId);
BigDecimal gladValue = new BigDecimal(proportion.get("glad")) ;
mybatis查询获取结果,new BigDecimal方法会报错 java.math.BigDecimal cannot be cast to java.lang.String,debug查看发现proportion.get("glad")时获取的值是bigdecimal类型,这是什么原理啊
Map<String,String> map =new HashMap<>();
map.put("a","2");
BigDecimal a = new BigDecimal(map.get("a"));
这样子就没事
proportion真正返回的类型,要看uetpMeasurementReportMapper.queryEmotionMonitorProportion方法,前面的Map<String,String>指定了引用类型,当使用的时候才会检查类型
比如:
返回的类型为Map.class,并没有指定类型,但是可以编译通过。当获取age时map.get("age"),就会报类型转化错误
Person person = new Person("周",23);
Map<String,String> map = JSON.parseObject(JSON.toJSONString(person),Map.class);
System.out.println(map.get("age")); // 报错:java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
class Person {
String name;
int age;
}
没有设置返回值的ResultSet类型么,那你查询出来的类型可能就是默认的类型比如BigDecimal,而不是你的String,或者获取值的时候 String.valueOf转一下