1. 程式人生 > >[資料庫]MongoTemplate之分組分頁複合條件查詢

[資料庫]MongoTemplate之分組分頁複合條件查詢

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); ​}