欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis的SUM映射問題及解決

 更新時間:2022年01月30日 11:03:37   作者:sailor125  
這篇文章主要介紹了MyBatis的SUM映射問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SUM映射問題

當我們根據(jù)類別進行統(tǒng)計,返回的數(shù)據(jù)類型為HashMap<String,Object>,獲取數(shù)值類型,容易報

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

場景如下:

// Mapper層
<select id="selectInfoByTest" resultType="map">
? ? SELECT SUM(flag) as flags,taskid FROM qcdata GROUP BY taskid
</select>
// 接口
List<HashMap<String, Object>> selectInfoByTest();
?
// 調(diào)用代碼
List<HashMap<String, Object>> result = qcDao.selectInfoByTest();
int flags=(Integer)result.get(0).get("flags"); // 報錯
return JSONResult.ok(flags);

原因

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

解決方式

可以轉(zhuǎn)換為字符串,然后再轉(zhuǎn)換為int類型,在轉(zhuǎn)換過程中,不能使用(String)這種方式強轉(zhuǎn),本不是String類型,可以使用toString(),也可以使用String.valueOf(),更簡單的方式是用空字符串來轉(zhuǎn)換;

?? ?public JSONResult test() {
?? ??? ?List<HashMap<String, Object>> 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);
?? ?}

需要注意的是,在強轉(zhuǎn)之前最好判斷一下是否為空,空字符串,類型是否匹配,避免強轉(zhuǎn)失??;

sum 返回映射問題(sum報表統(tǒng)計接口返回)

MyBatis sum 返回值映射

mapper.xml代碼

?<select id="pieChart" ? ?resultType="map">
? ? ? ?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
?</select>

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;
    /**
     * 購買數(shù)量
     */
	private Integer commnumber;
    /**
     * 商品單價
     */
	private BigDecimal price;
    /**
     * 收貨地址
     */
	private String useraddress;
    /**
     * 訂單狀態(tài) 0未支付 1正常 2刪除
     */
	private Integer orderstatus;
    /**
     * 收貨人
     */
	private String username;
    /**
     * 收貨人手機號
     */
	private String mobilephone;
    /**
     * 發(fā)貨狀態(tài) 0未發(fā)貨 1已發(fā)貨 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<HashMap<String,Object>>  result =ordersService.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());
        }
        session = request.getSession();
        System.out.println("totalPriceList:"+totalPriceList+",categoryList:"+categoryList);
        session.setAttribute("totalPriceList",totalPriceList);
        session.setAttribute("categoryList",categoryList);
        return "/admin/echars/piechart";
    }

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java實現(xiàn)兩臺服務(wù)器間文件復制的方法

    java實現(xiàn)兩臺服務(wù)器間文件復制的方法

    這篇文章主要介紹了java實現(xiàn)兩臺服務(wù)器間文件復制的方法,是對單臺服務(wù)器上文件復制功能的升級與改進,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • 如何使用Reactor完成類似Flink的操作

    如何使用Reactor完成類似Flink的操作

    這篇文章主要介紹了如何使用Reactor完成類似Flink的操作,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下
    2021-03-03
  • Spring Security OAuth2 token權(quán)限隔離實例解析

    Spring Security OAuth2 token權(quán)限隔離實例解析

    這篇文章主要介紹了Spring Security OAuth2 token權(quán)限隔離實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Java常用字符串方法小結(jié)

    Java常用字符串方法小結(jié)

    字符串變量是Java與C語言的一大不同之處。Java之中的 String 類和 Stringbuffer 類提供了大量的對字符串操作的方法。String 類適合處理較小的字符串,而Stringbuffer類適合處理大量字符串
    2017-04-04
  • MyBatis-Plus條件構(gòu)造器Wrapper應(yīng)用實例

    MyBatis-Plus條件構(gòu)造器Wrapper應(yīng)用實例

    QueryWrapper是用于查詢的Wrapper條件構(gòu)造器,可以通過它來構(gòu)建SELECT語句中的WHERE條件,這篇文章主要介紹了MyBatis-Plus數(shù)據(jù)表操作條件構(gòu)造器Wrapper,需要的朋友可以參考下
    2023-09-09
  • springboot集成schedule實現(xiàn)定時任務(wù)

    springboot集成schedule實現(xiàn)定時任務(wù)

    在項目開發(fā)過程中,我們經(jīng)常需要執(zhí)行具有周期性的任務(wù)。通過定時任務(wù)可以很好的幫助我們實現(xiàn)。本篇文章主要介紹了springboot集成schedule實現(xiàn)定時任務(wù),感興趣的小伙伴們可以參考一下
    2018-05-05
  • spring cloud中微服務(wù)之間的調(diào)用以及eureka的自我保護機制詳解

    spring cloud中微服務(wù)之間的調(diào)用以及eureka的自我保護機制詳解

    這篇文章主要介紹了spring cloud中微服務(wù)之間的調(diào)用以及eureka的自我保護機制詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 解決eclipse中maven引用不到已經(jīng)存在maven中jar包的問題

    解決eclipse中maven引用不到已經(jīng)存在maven中jar包的問題

    這篇文章主要介紹了解決eclipse中maven引用不到已經(jīng)存在maven中jar包的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 你知道Java的這些騷操作嗎?

    你知道Java的這些騷操作嗎?

    今天在看python相關(guān)的東西,看到各種騷操作,回頭想了下Java有沒有什么騷操作,整理下面幾種,一起看一下吧,需要的朋友可以參考下
    2021-05-05
  • Mybatis對mapper的加載流程深入講解

    Mybatis對mapper的加載流程深入講解

    這篇文章主要給大家介紹了關(guān)于Mybatis對mapper的加載流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11

最新評論