Sql查询 返回多个函数、count值时报错 java.math.BigDecimal cannot be cast to java.lang.Integer

在mybatis中使用MySql查询语句,返回多个数值、count值时可以运用Map

serviceImpl

Map<String,Long> voMap=baseMapper.getCount();
		vo.setCountAll(voMap.get("CountAll"));
		vo.setCountDatabase(voMap.get("CountDatabase"));
		vo.setCountApi(voMap.get("CountApi"));
		vo.setCountNoItem(voMap.get("CountNoItem"));
		vo.setCountHaveItem(voMap.get("CountHaveItem"));
		vo.setCountNoShare(voMap.get("CountNoShare"));
		vo.setCountNow(voMap.get("CountNow"));
		vo.setCountDay(voMap.get("CountDay"));

dao

Map<String, Long> getCount();

mapper.xml

<select id="getCount" resultType="map">
        SELECT
            COUNT(*) as CountAll,
            COUNT(type='database' OR NULL) as CountDatabase,
            COUNT(type!='database' OR NULL) as CountApi,
            COUNT(share_type=1 OR NULL) as CountNoItem,
            COUNT(share_type=2 OR NULL) as CountHaveItem,
            COUNT(share_type=3 OR NULL) as CountNoShare,
            COUNT(update_frequ='实时' OR NULL) as CountNow,
            COUNT(update_frequ='每日' OR NULL) as CountDay
        FROM table
 </select>

运用到函数求值返回结果时,如Rounf()...数据类型是BigDecimal

基础加减乘除,求和,如sum、count...时,返回结果数据类型为Long

需要转换。

SELECT ROUND((Count1/Count2)*100) AS Count3....后面具体语句略

我这里使用的是map作为返回值类型,key对应的sql查询as 后的值,这里为count3 

Map<String,Object> toolMap=mallOperationDao.getCount();
        BigDecimal count= (BigDecimal) toolMap.get("Count3");
        vo.setToolEffect(count.longValue());

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值