我尝试使用日历瞬间和循环播放
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);
}
}
需要花费太多时间并反复调用存储库。有没有其他方法可以找到,比如jdbc查询或其他什么
答案 0 :(得分:0)
我顺便说一句..
选择DATE_FORMAT(created_date
,'%M%Y')作为月,从bill_history group by month(created_date)limit 6中选择总和(金额);
结果将是
月|总和(金额)
2016年6月| 129388
2016年7月| 22723419
2016年8月| 525004.4