Mybatis 提示java.math.BigDecimal cannot be cast to java.lang.Integer分析

阿里 阅读:189 2021-03-31 16:53:45 评论:0

今天在编写统计模块时,出现如下错误信息:

java.math.BigDecimal cannot be cast to java.lang.Integer

核心代码:

<select id="getSum" parameterType="map" resultType="java.util.HashMap"> 
			select 
				sum(draw_num) as drawNum ,   
				sum(base_num) as baseNum,   
				sum(photo_num) as photoNum,  
				sum(negative_num) as negativeNum   
			from ucas_file_info where 1 = 1  
			<include refid="condition"></include> 
	</select>

接口定义

List<Map> getSum(Map<String, Object> paramter);

service 实现:

      List<Map> sum = fileMapper.getSum(paramter); 
			sum.stream().forEach(item ->{ 
				 
				if(item.get("drawNum") != null){ 
					BigDecimal drawNum = (BigDecimal) item.get("drawNums"); 
					result.put("drawNum", drawNum.longValue()); 
				} 
				if(item.get("baseNum") != null){ 
					BigDecimal baseNum = (BigDecimal) item.get("baseNums"); 
					result.put("baseNum", baseNum.longValue()); 
				} 
				if(item.get("photoNum") != null){ 
					BigDecimal photoNum =(BigDecimal) item.get("photoNums"); 
					result.put("photoNum", photoNum.longValue()); 
				} 
				if(item.get("negativeNum") != null){ 
					BigDecimal negativeNum = (BigDecimal) item.get("negativeNums"); 
					result.put("negativeNum", negativeNum.longValue()); 
				} 
			});

错误原因:

mysql sum() 函数的结果映射为 java.math.BigDecimal ,不能直接转换为java.lang.Integer 或者是java.lang.Long类型

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
关注我们

一个IT知识分享的公众号