程式碼改造實錄--分頁查詢先限定條件再查詢,而非查詢後再加條件判斷
阿新 • • 發佈:2020-07-27
原來的程式碼:
Outpatient outpatientQuery = new Outpatient(); outpatientQuery.setUserId(user.getId()); Sort sort = Sort.by(Sort.Direction.DESC, "createTime"); Pageable pageable = PageRequest.of(page, 8, sort); Page<Outpatient> pages = outpatientService.queryOutpatients(outpatientQuery, pageable); List<InformationVo> informationVoVoList = new ArrayList<>(); for (Outpatient out : pages.getContent()) { Long createTime = out.getCreateTime(); Long dayTime = Long.valueOf(System.currentTimeMillis()); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(createTime); calendar.add(Calendar.DATE, 20); Calendar calendar1 = Calendar.getInstance(); calendar1.setTimeInMillis(createTime); calendar1.add(Calendar.DATE, 23); long beginTime = calendar.getTimeInMillis(); long endTime = calendar1.getTimeInMillis(); if (dayTime.compareTo(beginTime) >= 0 && dayTime.compareTo(endTime) <= 0) { ...... } }
修改後程式碼:
Calendar calendarStart = Calendar.getInstance(); calendarStart.add(Calendar.DATE, -23); Calendar calendarEnd = Calendar.getInstance(); calendarEnd.add(Calendar.DATE, -20); OutpatientQuery outpatientQuery = new OutpatientQuery(); outpatientQuery.setUserId(userId); outpatientQuery.setCreateTimeStart(calendarStart.getTimeInMillis()); outpatientQuery.setCreateTimeEnd(calendarEnd.getTimeInMillis()); Sort sort = Sort.by(Sort.Direction.DESC, "createTime"); Pageable pageable = PageRequest.of(page, 8, sort); Page<Outpatient> pages = outpatientService.queryOutpatients(outpatientQuery, pageable); List<InformationVo> informationVoVoList = new ArrayList<>(); for (Outpatient out : pages.getContent()) { ...... }
修改後:
1、程式碼減少,邏輯更清楚;
2、減少無效的資料訪問;
3、修正了分頁資訊。