首页 > 数据库 >sql count id 返回long型数据

sql count id 返回long型数据

时间:2022-09-04 14:34:23浏览次数:97  
标签:count int long rst sql count1 count2 id

数据库: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}1234567

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

用list来接收返回值:

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

这样处理没有任何错误,今天在处理另一个相似功能时,决定换一个思路
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}123

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

采用map来接收返回结果

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

程序运行到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;//总数12345

通过!

标签:count,int,long,rst,sql,count1,count2,id
From: https://www.cnblogs.com/javaxubo/p/16655067.html

相关文章

  • SpringBoot+mybatis项目 配置控制台打印sql语句
    @SpringBoot+mybatis项目配置控制台打印sql语句前几天在做项目的过程中,使用的持久层框架是mybatis,在mapper.xml中自己写sql,当时写完了自己的业务代码,测试时候一直觉得数......
  • Sqlalchemy数据迁移
    场景已经创建了数据库模型,并且生成了数据表,数据表里已经有了数据,如果此时模型增加或删除了字段后,想要重新作用于表的话就会有2种方式第一种:删除之前数据库的表,然后重......
  • MSSQL Sqlserver 使用ms未公开的存储过程重建全库表索引
    两个有用的ms未公开的存储过程sp_MSforeachDB遍历所有的数据库sp_MSforeachtable遍历为库中所有的表可以用sp_helptext来查看他们的实现代码 应用:---重建全库索......
  • mysql
    服务器处理客户端请求:客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)。流程:连接管理,解析与优化(查询缓存,语法解......
  • mysql索引优化
    一、分页查询优化很多时候我们业务系统实现分页功能可能会用如下sql实现:select*fromemployeeslimit10000,10;表示从表employees中取出从10001行开始的10行......
  • PostgreSQL-从修改的行返回数据
    有时在操作修改的行时从修改的行中获取数据很有用。INSERT、UPDATE和DELETE命令都有一个可选的RETURNING子句来支持这一点。使用RETURNING可以避免执行额外的数据库......
  • MySQL教程 - 触发器(Trigger)
    更新记录转载请注明出处。2022年9月4日发布。2022年9月4日从笔记迁移到博客。触发器说明一段SQL语句一种特殊的存储过程不可以自己手动调用,在触发条件下自动调......
  • MySQL教程 - 存储过程与自定义函数(Produce & Function)
    更新记录转载请注明出处。2022年9月4日发布。2022年9月4日从笔记迁移到博客。存储过程与函数说明存储过程和函数是一条或多条SQL语句的集合存储过程的返回值通......
  • [Google] LeetCode 329 Longest Increasing Path in a Matrix 记忆化搜索
    Givenanmxnintegersmatrix,returnthelengthofthelongestincreasingpathinmatrix.Fromeachcell,youcaneithermoveinfourdirections:left,right......
  • mysql复习
    ##数据库的好处 1.持久化数据到本地 2.可以实现结构化查询,方便管理##数据库相关概念 1、DB:数据库,保存一组有组织的数据的容器 2、DBMS:数据库管理系统,又称为数据库软件(产......