2016-08-12 53 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