2016-08-12 51 views
-4

,以從數據庫中獲得最後六月份的數據試圖與壓延瞬間像我如何通過一個月基地

for(int i = 6; i >= 0; --i){ 
    GraphDto graphDto=new GraphDto(); 

    Calendar c2=Calendar.getInstance(); 
    c2.add(Calendar.MONTH,-i); 
    c2.set(Calendar.DAY_OF_MONTH, 1); 

    graphDto.setLabel(getMonth(c2.get(Calendar.MONTH))); 

    Date fromDate1=c2.getTime(); 
    c2.set(Calendar.DAY_OF_MONTH; 
    c2.getActualMaximum(Calendar.DAY_OF_MONTH)); 

    Date toDate1=c2.getTime(); 
    Double value1=billHistoryRepository.findAmount(fromDate1,toDate1); 
    Double value2=paymentHistoryRepository.findAmount(fromDate1,toDate1); 
    c2.add(Calendar.MONTH,1); 

    if(value1!=null) { 
     graphDto.setValue1(value1); 
    } 
    if(value2!=null) { 
     graphDto.setValue2(value2); 
     graphDtoList.add(graphDto); 
    } 
} 

循環花費太多的時間和重複調用庫。有來自bill_history組的任何其他方法找出來,像JDBC查詢或東西

+0

你看過這個http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods嗎? – Deceiver

+0

難道你不能一次獲得最近6個月的數據,然後每個月在Java代碼中進行分組? – g00glen00b

回答

0

我的方式..

選擇DATE_FORMAT(created_date, '%M%Y')爲月,總和(金額)按月份(created_date)限制6;

結果將是

本月|總和(金額)

2016年6月| 129388

2016年7月| 22723419

2016年8月| 525004.4