统计返回的Decimal/long型数据转换问题
mysql数据库在进行统计时候,返回的count()是个long型,sum()返回的是bigDecimal类型,前段需要的是int型故而需要进行转换。
<select id="getDeviceRentNum" parameterType="map" resultType="map">
SELECT SUM(IF(f.`rent`=1,1,0)) rentNum, COUNT(d.`id`) deviceTotal
FROM d_device d INNER JOIN d_device_fields f ON d.`id`=f.`device_id`
WHERE d.`del_flag`=0 AND f.`del_flag`=0 AND d.`company_id`=#{companyId}
<if test="productId!=null and productId!=''">AND d.`product_id`=#{productId}</if>
</select>
<select id="getDeviceSoldNum" parameterType="map" resultType="Integer">
SELECT COUNT(d.id) soldNum FROM d_device_fields f INNER JOIN d_device d ON f.device_id=d.id INNER JOIN d_device_user_bind dub ON d.id=dub.device_id
WHERE d.del_flag=0 AND dub.del_flag=0 AND f.rent!=1 AND d.`company_id`=#{companyId}
<if test="productId!=null and productId!=''">AND d.`product_id`=#{productId}</if>
Service 层转换
if(sign==2){
Map<String, Object> resultMap = new HashMap<String,Object>();
Map<String, Object> rentMap = deviceMapper.getDeviceRentNum(paramMap);
Integer soldNum = deviceMapper.getDeviceSoldNum(paramMap);
Integer rentNum = ((BigDecimal)rentMap.get("rentNum")).intValue();
String dTotal = ((Long)rentMap.get("deviceTotal")).toString();
Integer deviceTotal = Integer.valueOf(dTotal);
Integer forSaleNum = (deviceTotal-soldNum-rentNum);
resultMap.put("soldNum",soldNum );
resultMap.put("rentNum", rentNum);
resultMap.put("forSaleNum", forSaleNum);
resultMap.put("deviceTotal",deviceTotal);
return resultMap;
}
经过如此转换方可以,否则会报错的,报错如下:
java.lang.ClassCastException: java.lang.Long cannot be cast to java.math.BigDecimal 之类的
统计返回的Decimal/long型数据转换问题的更多相关文章
- float:浮点型double:双精度实型decimal:数字型单精度浮点数(Single)双精度浮点数(double)
单精度浮点数(Single) 双精度浮点数(double) Decimal为SQL Server.MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部分以及小 ...
- mybatis insert update delete返回都是整型 0,1,增,删,改要提交事物
mybatis insert update delete返回都是整型 0,1, 没有扔 增,删,改要提交事物
- Codevs_1040_[NOIP2001]_统计单词个数_(划分型动态规划)
描述 http://codevs.cn/problem/1040/ 与Codevs_1017_乘积最大很像,都是划分型dp. 给出一个字符串和几个单词,要求将字符串划分成k段,在每一段中求共有多少单词 ...
- oracle pipelined返回值函数 针对数据汇总统计 返回结果集方法
近期需要一个汇总统计,由于数据太多,数据量太大所以在java程序中实现比较困难.若用后台程序统计,数据不能保证实时,同时实现周期比较长.顾使用函数返回结果集的方式,在不增加临时表的情况下实时获取数据. ...
- springmvc返回接口中long型,页面接收时值却变了
Java序列化JSON时long型数值不准确 现象 项目中用到了唯一ID生成器.生成出的ID时long型的(比如说4616189619433466044).通过某个rest接口中返回json数据后,发 ...
- javascript 中string 型数据转换成int类型
var str1 = "1234";var str2 = "1234";number = parseInt(str1); number就是int型 str1+s ...
- java如何把char型数据转换成int型数据(转)
一字符串,String=“2324234535”:把第i个数取出来时是char型的:char temp=String.charAt(i)如何把char型转换成int型?我需要求个尾数之和,如:123的 ...
- C++将整型数据转换成大端或小端存储顺序
大端和小端的概念参考之前博客: 大端/小端,高字节/低字节,高地址/低地址,移位运算 昨晚帮导师从指令中恢复图像的时候,导师要我转换成raw格式,也就是记录图像像素的二进制序列,然后反复强调让我注意大 ...
- 转载:SQL按照日、周、月、年统计数据的方法
转载源:http://www.jb51.net/article/42613.htm SQL按照日.周.月.季度.年统计数据的方法 方式一: --按日 select sum(consume),day([ ...
随机推荐
- Python3---常见函数---range()用法
0X01函数说明: python range() 函数可创建一个整数列表,一般用在 for 循环中. 0X02函数语法: range(start,stop[,step]) start: 计数从 sta ...
- Flask - 中间件
其实就是封装旧酒,装进新瓶,自己再加点料.留坑,还没有用到. Flask的请求扩展就是Django的中间件.Django的中间件不是Flask的中间件 from flask import Flask ...
- Django线上项目后台admin不显示问题
记一次django项目的线上部署错误,django+nginx 一.问题描述 在将django项目部署到阿里云(nginx作为web服务器)上之后发现出现后台管理界面admin不显示样式. 二.问题分 ...
- 吴裕雄--天生自然HADOOP操作实验学习笔记:hbase简介
实验目的 了解hbase的概念 通过安装hbase了解hbase的原理 了解hbase与hadoop的关系 复习hadoop和zookeeper的运行 实验原理 hbase是bigtable的开源山寨 ...
- Mp3下载
- QQ企业通-----客户端消息发送模块设计---知识点
Guid.NewGuid 方法 初始化 Guid 结构的新实例. Guid 结构 表示全局唯一标识符 (GUID). Encoding..::.Unicode 属性 获取使用 Little- ...
- Linux用户和用户组管理命令
一.用户管理命令 1.useradd 创建用户或更新默认新用户的信息 使用方法 useradd [options] 用户名 选项: useradd -u 指定UID具体数值, ...
- Redis详解(一)——RDB
Redis详解(一)--RDB 前言 由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比, ...
- 阿里RocketMq试用记录+简单的Spring集成
CSDN学院招募微信小程序讲师啦 程序猿全指南,让[移动开发]更简单! [观点]移动原生App开发 PK HTML 5开发 云端应用征文大赛,秀绝招,赢无人机! 阿里RocketMq试用记录+简单的S ...
- Mac如何升级自带的vim
brew install vim --with-lua --with-override-system-vi brew install macvim --with-lua --with-override ...