统计返回的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([ ...
随机推荐
- python学习 —— python3简单使用pymysql包操作数据库
python3只支持pymysql(cpython >= 2.6 or >= 3.3,mysql >= 4.1),python2支持mysqldb. 两个例子: import pym ...
- ES5 Object.assign 低版本浏览器内核兼容问题
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { ...
- Linux 下安装 FFmpeg
1. 下载源代码: git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg 2. 编译 ./configure --enable-shared --pre ...
- RIFF
RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构. RIFF文件所包含的数据类型由该文件的扩展 ...
- dequeueReusableCellWithIdentifier 与 dequeueReusableCellWithIdentifier:forIndexPath 区别
参考:http://stackoverflow.com/questions/25826383/when-to-use-dequeuereusablecellwithidentifier-vs-dequ ...
- leetcode209 Minimum Size Subarray Sum
""" Given an array of n positive integers and a positive integer s, find the minimal ...
- python中时间戳的探索
声明 本文章只针对python3.6及以上版本. 问题提出 首先,我们先import一些必要模块: In [1]: from datetime import datetime, timezone, t ...
- 解决请求中的post、get乱码问题以及响应的乱码问题
post: get: response:
- Springboot 项目启动设置
//配置默认访问路径 并且自动打开浏览器 需要创建独立文件 @Controller public class HomeController { @RequestMapping("/ ...
- 为安卓手机刷上手机kali系统Nethunter
kali Nethunter是一个装在手机上的kali,集成了kali的工具包,hid,无线攻击等等. 本文主要叙述如何安装此系统并正确的配置.不让你走弯路. 首先我们拒绝傻瓜安装软件 kali ne ...