sql count(id)返回long型数据

数据库:mysql
框架:struts2+spring+mybatis
项目中很多地方用到count(*)来查询数据量,今天在写一个新的小功能时想要吧数据处理做的简单些

原来的sql:

select count(1) AS count1
        from ke_table1 a
        where a.user_id=#{userId}
        union all
        select count(1) AS count2
        from ke_table2 b
        where b.user_id=#{userId}

返回结果是int型
这里写图片描述

用list来接收返回值:

List<Integer> rst = manageService.searchCnt();// 获取总数
int totalCnt=rst.get(0)+rst.get(1)//总数

这样处理没有任何错误,今天在处理另一个相似功能时,决定换一个思路
sql调整为:

select count(a.id) AS count1,count(b.id) AS count2
        from ke_table1 a inner join ke_table2 b on a.user_id=b.user_id
        where a.user_id=#{userId}

查询结果:
这里写图片描述

采用map来接收返回结果

Map<String, Object> rst =  manageService.searchCnt();// 获取总数
int count1=(Integer)rst.get("count1");
int count2=(Integer)rst.get("count2");
count=count1+count2;//总数

程序运行到int count1=rst.get("count1");时报错
ERROR 2017-07-26 09:54:09,171 java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer

因此,可见sql语句count(列名)返回的并不是int类型,而是long型值,最后调整代码

String count1 = rst.get("count1").toString();
int counta = Integer.parseInt(count1);
String count2 = rst.get("count2").toString();
int countb = Integer.parseInt(count2);
int count = counta+countb;//总数

通过!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值