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 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来接收返回结果

MapObject> 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;//总数

通过!

你可能感兴趣的:(sql)