当我们根据类别进行统计,返回的数据类型为hashmap<string,object>,获取数值类型,容易报
java.math.bigdecimal cannot be cast to java.lang.integer
场景如下:
// mapper层<lect id="lectinfobytest" resulttype="map"> lect sum(flag) as flags,taskid from qcdata group by taskid</lect>// 接口list<hashmap<string, object>> lectinfobytest();// 调用代码list<hashmap<string, object>> result = qcdao.lectinfobytest();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<hashmap<string, object>> result = qcdao.lectinfobytest(); // tostring int flags=integer.parint(result.get(0).get("flags").tostring()); // string.valueof int flags2=integer.parint(string.valueof(result.get(0).get("flags"))); // 空字符串 int flags3=integer.parint(result.get(0).get("flags")+""); return jsonresult.ok(flags+flags2+flags3); }
需要注意的是,在强转之前最好判断一下是否为空,空字符串,类型是否匹配,避免强转失败;
mapper.xml代码
<lect id="piechart" resulttype="map"> lect 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</lect>
pojo
private static final long rialversionuid = 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 uraddress; /** * 订单状态 0未支付 1正常 2删除 */private integer orderstatus; /** * 收货人 */private string urname; /** * 收货人手机号 */private string mobilephone; /** * 发货状态 0未发货 1已发货 2确认收货 */private integer kdstatus; /** * 快递编号 */private string kdnumber; /** * 买家id */private string buyurid; /** * 卖家id */private string llurid;privat胃疼是什么原因导致的e commodity commodity;private bigdecimal totalprice;
cont适合失恋听的歌roller
/** * 管理员首页 饼图 * */ @getmapping("/echars/piechart") public string piechart(httpssion ssion,httprvletrequest request){ list<hashmap<string,object>> result =ordersrvice.piechart(); list<string> totalpricelist= new arraylist<string>(); list<string> categorylist= new arraylist<string>(); for( map<string, object> maplist : result ) { totalpricelist.add(maplist.get("totalprice").tostring()); categorylist.add(maplist.get("category").tostring()); } ssion = request.getssion(); system.out.println("totalpricelist:"+totalpricelist+",categorylist:"+categorylist); ssion.tattribute("totalpricelist",totalpricelist); ssion.tattribute("categorylist",categorylist); return "/admin1的倒数是什么/echars/piechart"; }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 20:48:14,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/856ed1d4a351ae0640f5c3492a28f888.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:MyBatis的SUM映射问题及解决.doc
本文 PDF 下载地址:MyBatis的SUM映射问题及解决.pdf
留言与评论(共有 0 条评论) |