需求:从数据库中取出count(xxx) 加到一个int总数中
int aaa = 0;
String str = (String) xxxMap.get("xxx");
if(StringUtils.isNotBlank(str)) aaa+= Integer.parseInt(str);
用形如上面的代码查数据时会直接报错: Caused by: java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String
原因是数据库使用的是Oracle数据库, oracle中查count(xxx)得到的number类型数据在Java中会转换成BigDecimal类型的数据被查出
而我们需要得到的是int类型数据
因此 考虑使用BigDecimal接受查出来的数据, 再用BigDecimal.intValue方法转为int即可
BigDecimal xxx= (BigDecimal) xxxMap.get("xxx");
aaa += count.intValue();
运行依旧报错...这次是空指针异常
考虑是BigDecimal取到了null值 aaa += null报错了
加个判断空值, 代码如下:
BigDecimal xxx= (BigDecimal) xxxMap.get("xxx");
if(xxx != null) aaa += count.intValue();
接口测试成功~