[資料庫]MongoTemplate之分組分頁複合條件查詢
阿新 • • 發佈:2019-01-09
public Page<CourseDetail> listCourseDetails(QueryCourseDetailModel queryModel) {
//建立排序模板Sort
Sort sort = new Sort(Sort.Direction.DESC, "creationDate");
//建立分頁模板Pageable
Pageable pageable = new PageRequest(queryModel.getPageStart(), queryModel.getPageSize(), sort);
//建立查詢條件物件
Query query = new Query();
//條件gradeId =XX
Criteria criteria = Criteria.where("gradeId").is(queryModel.getGradeId());
//條件 and time > XX
if (!StringUtil.isEmpty(queryModel.getStartCourseTime())) {
criteria.and("time").gt(queryModel.getStartCourseTime());
}
//條件 and time < XX if(! StringUtil.isEmpty(queryModel.getEndCourseTime())){
criteria.and("time").lt(queryModel.getEndCourseTime());
query.addCriteria(criteria);
//mongoTemplate.count計算總數
long total = mongoTemplate.count(query, CourseDetail.class);
// mongoTemplate.find 查詢結果集
List<CourseDetail> items = mongoTemplate.find(query.with(pageable), CourseDetail.class);
items.forEach(courseDetail -> {
courseDetail.setTeacherUnReplaySize(homeworkRepository.countByGradeIdAndParentsReplyTeacherStatusAndCourseStartTimeAndMarkTrue(courseDetail.getGradeId(), PARENTS_REPLY_TEACHER_STATUS.UNANSWERED, courseDetail.getCourseStartTime().getTime()));
});
return new PageImpl(items, pageable, total);
}