统计返回的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([ ...
随机推荐
- 随机游走模型(Random Walk)
给定了一个时间顺序向量\(z_1,...,z_T\),rw模型是由次序r来定义的,\(z_t\)仅取决于前\(t-r\)个元素.当r = 1时为最简单的RW模型. 给定了向量的其他元素,\(z_t\) ...
- 隧道技术(Tunneling)
隧道技术及其应用 隧道技术(Tunneling)是一种通过使用互联网络的基础设施在网络之间传递数据的方式.使用隧道传递的数据(或负载)可以是不同协议的数据帧或包.隧道协议将其它协议的数据帧或包重新封装 ...
- Xcode10升级问题:Multiple commands produce Info.plist
升级到Xcode10以后,编译过程遇到的第一个问题就是类似于这样的: Multiple commands produce '/Users/jiaxiaoyan/Library/Developer/Xc ...
- VS2010如何在同一个解决方案下建立多个项目以及切换运行不同项目
前言: 在编一些小程序时,往往我们不需要一个问题就建立一个解决方案,我们完全可以让多个项目放在同一个解决方案下,切换启动项运行即可.接下来介绍具体的步骤 一.建立空白解决方案以及添加新项目 1.先建立 ...
- LinkedList学习:API调用、栈、队列实现
参考的博客 Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例 如果你想详细的区了解容器知识以及本文讲的LinkedList,我推荐你去看这篇博客和这个做个的容器系列 Lin ...
- JDBC--Statement使用
1.通过Statement实现类执行更新操作(INSERT.UPDATE .DELETE): --1)获取数据库连接Connection的对象: --2)通过Connection类的createSta ...
- js求两个整数的百分比
function GetPercent(num, total) { num = parseFloat(num); ...
- WIN2008中部署网站后样式及JS加载不了(转载)
今天在一台刚刚装好的WIN2008上部署一个问题,一切按流程来:① 控制面板加IIS,把.NET 3.5打勾② 装.NET 4.0框架③ 装MSSQL2012④ IIS中部署网站⑤ 修改web.con ...
- Hive事务原理和Datax同步事务表问题解决
一.事务的概述 1.定义 事务就是一组单元化操作,这些操作要么都执行,要么都不执行,是一个不可分割的工作单位. 2.特点 事务(transaction)具有的四个要素:原子性(Atomicity).一 ...
- 03WebDriver
概述 WebDriver一般用于测试 执行脚本 1.驱动包 WebDriver 不同的浏览器不同的驱动包 2.驱动包技术一个chrome.exe的程序,放到环境变量中,一般放在C:windows里 ...