1.起因
今天接到了新需求,要从一张表中查出某一年的数据并按月返回给前端(终端),一开始想到分开每个月去数据库查询,查询结果直接赋值给返回对象即可,但这样相当于你要查12次数据库,很明显这个方案被pass掉了,然后我想查出整年的数据然后在Java中进行解决。
2.解决方案
我想到的比较简洁且快速的就是使用lambda表达式先过滤再赋值即可,这里还用到了Hutool工具类
//一月List<ProgramPlanEntity> january = programPlanEntityList.stream().filter(item -> DateUtil.month(item.getPlayTime()) == 0).collect(Collectors.toList());//二月List<ProgramPlanEntity> february = programPlanEntityList.stream().filter(item -> DateUtil.month(item.getPlayTime()) == 1).collect(Collectors.toList());//三月List<ProgramPlanEntity> march = programPlanEntityList.stream().filter(item -> DateUtil.month(item.getPlayTime()) == 2).collect(Collectors.toList());//四月List<ProgramPlanEntity> april = programPlanEntityList.stream().filter(item -> DateUtil.month(item.getPlayTime()) == 3).collect(Collectors.toList());//五月List<ProgramPlanEntity> may = programPlanEntityList.stream().filter(item -> DateUtil.month(item.getPlayTime()) == 4).collect(Collectors.toList());//六月List<ProgramPlanEntity> june = programPlanEntityList.stream().filter(item -> DateUtil.month(item.getPlayTime()) == 5).collect(Collectors.toList());//七月List<ProgramPlanEntity> july = programPlanEntityList.stream().filter(item -> DateUtil.month(item.getPlayTime()) == 6).collect(Collectors.toList());//八月List<ProgramPlanEntity> august = programPlanEntityList.stream().filter(item -> DateUtil.month(item.getPlayTime()) == 7).collect(Collectors.toList());//九月List<ProgramPlanEntity> september = programPlanEntityList.stream().filter(item -> DateUtil.month(item.getPlayTime()) == 8).collect(Collectors.toList());//十月List<ProgramPlanEntity> october = programPlanEntityList.stream().filter(item -> DateUtil.month(item.getPlayTime()) == 9).collect(Collectors.toList());//十一月List<ProgramPlanEntity> november = programPlanEntityList.stream().filter(item -> DateUtil.month(item.getPlayTime()) == 10).collect(Collectors.toList());//十二月List<ProgramPlanEntity> december = programPlanEntityList.stream().filter(item -> DateUtil.month(item.getPlayTime()) == 11).collect(Collectors.toList());programPlanYearVO.setJanuary(january);programPlanYearVO.setFebruary(february);programPlanYearVO.setMarch(march);programPlanYearVO.setApril(april);programPlanYearVO.setMay(may);programPlanYearVO.setJune(june);programPlanYearVO.setJuly(july);programPlanYearVO.setAugust(august);programPlanYearVO.setSeptember(september);programPlanYearVO.setOctober(october);programPlanYearVO.setNovember(november);programPlanYearVO.setDecember(december);
VO类
@Datapublic class ProgramPlanYearVO extends BaseEntity {//一月private List<ProgramPlanEntity> january;//二月private List<ProgramPlanEntity> february;//三月private List<ProgramPlanEntity> march;//四月private List<ProgramPlanEntity> april;//五月private List<ProgramPlanEntity> may;//六月private List<ProgramPlanEntity> june;//七月private List<ProgramPlanEntity> july;//八月private List<ProgramPlanEntity> august;//九月private List<ProgramPlanEntity> september;//十月private List<ProgramPlanEntity> october;//十一月private List<ProgramPlanEntity> november;//十二月private List<ProgramPlanEntity> december;}
起码是完成了功能,如果有更好的方法欢迎提供思路,感激不尽
