MyBatis的SUM映射问题及解决

网友投稿 957 2022-11-02

MyBatis的SUM映射问题及解决

MyBatis的SUM映射问题及解决

目录SUM映射问题原因解决方式sum 返回映射http://问题(sum报表统计接口返回)MyBatis sum 返回值映射

SUM映射问题

当我们根据类别进行统计,返回的数据类型为HashMap,获取数值类型,容易报

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

场景如下:

// Mapper层

SELECT SUM(flag) as flags,taskid FROM qcdata GROUP BY taskid

// 接口

List> selectInfoByTest();

// 调用代码

List> result = qcDao.selectInfoByTest();

int flags=(Integer)result.get(0).get("flags"); // 报错

return jsONResult.ok(flags);

原因

sql中的 sum() 返回返回值在mybatis中是作为BigDecimal来返回的,而不能用Integer来接收

解决方式

可以转换为字符串,然后再转换为int类型,在转换过程中,不能使用(String)这种方式强转,本不是String类型,可以使用toString(),也可以使用String.valueOf(),更简单的方式是用空字符串来转换;

public JSONResult test() {

List> result = qcDao.selectInfoByTest();

// toString

int flags=Integer.parseInt(result.get(0).get("flags").toString());

// String.valueOf

int flags2=Integer.parseInt(String.valueOf(result.get(0).get("flags")));

// 空字符串

int flags3=Integer.parseInt(result.get(0).get("flags")+"");

return JSONResult.ok(flags+flags2+flags3);

}

需要注意的是,在强转之前最好判断一下是否为空,空字符串,类型是否匹配,避免强转失败;

sum 返回映射问题(sum报表统计接口返回)

MyBatis sum 返回值映射

mapper.xml代码

select sum(com.thinkmoney*ord.commnumber) as totalPrice , com.category as category from commodity com,orders ord

where com.commid=ord.commid and ord.orderstatus=1

GROUP BY com.category

pojo

private static final long serialVersionUID = 1L;

/**

* 订单id

*/

private String id;

/**

* 订单编号

*/

private String ordernumber;

/**

* 下单时间

*/

private Date ordertime;

/**

* 商品名

*/

private String commname;

/**

* 商品id

*/

private String commid;

/**

* 商品描述

*/

private String commdesc;

/**

* 购买数量

*/

private Integer commnumber;

/**

* 商品单价

*/

private BigDecimal price;

/**

* 收货地址

*/

private String useraddreMjCorJfss;

/**

* 订单状态 0未支付 1正常 2删除

*/

private Integer orderstatus;

/**

* 收货人

*/

private String username;

/**

* 收货人手机号

*/

private String mobilephone;

/**

* 发货状态 0未发货 1已发货 2确认收货

*/

private Integer kdstatus;

/**

* 快递编号

*/

private String kdnumber;

/**

* 买家id

*/

private String buyuserid;

/**

* 卖家id

*/

private String selluserid;

private Commodity commodity;

private BigDecimal totalPrice;

controller

/**

* 管理员首页 饼图

* */

@GetMapping("/echars/piechart")

public String piechart(HttpSession session,HttpServletRequest request){

List> result =ordersService.pieChart();

List totalPriceList= new ArrayList();

List categoryList= new ArrayList();

for( Map mapList : result ) {

totalPriceList.add(mapList.get("totalPrice").toString());

categoryList.add(mapList.get("category").toString());

}

session = request.getSession();

System.out.println("totalPriceList:"+totalPriceList+",categoryList:"+categoryList);

session.setAttribute("totalPriceList",totalPriceList);

session.setAttribute("categoryList",categoryList);

return "/admin/echars/piechart";

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Docker镜像超详细介绍
下一篇:Leaf - 一个开发友好、功能完备的开源微信商城框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~