原生方式
CareFacility careFacility = new CareFacility();
if(!facilityDynamicVM.getFacilityType().isEmpty()){
FacilityTypeEnum facilityTypeEnum = FacilityTypeEnum.checkEnum(facilityDynamicVM.getFacilityType());
careFacility.setFacilityType(facilityTypeEnum);
}
if(!facilityDynamicVM.getCountyCode().isEmpty()){
Address address = new Address();
address.setCountyCode(facilityDynamicVM.getCountyCode());
careFacility.setBusinessAdd(address);
}
if(!facilityDynamicVM.getCareFacilityName().isEmpty()){
careFacility.setCareFacilityName(facilityDynamicVM.getCareFacilityName());
}
ExampleMatcher matcher = ExampleMatcher.matching()
.withIgnoreNullValues()
.withIgnoreCase(true)
.withMatcher("careFacilityName",ExampleMatcher.GenericPropertyMatchers.contains())
.withMatcher("facilityTypeEnum",ExampleMatcher.GenericPropertyMatchers.exact())
.withMatcher("countyCode",ExampleMatcher.GenericPropertyMatchers.exact())
.withIgnorePaths("careFacilityId","careFacilityCode","careFacilityGrade","beds","nurseNumber","employeeNumber",
"openDate","managerName","joinedDate","featuredImageUrl","description","facilityOwnerType","contactInfo",
"owner","operator","licens","providedServices","facilityCatagory","equipmentOfFacilities","reviewLis","rate");
Example<CareFacility> example = Example.of(careFacility,matcher);
Pageable pageable = PageRequest.of(facilityDynamicVM.getPage(), facilityDynamicVM.getSize());
Page<CareFacility> careFacilityPage = careFacilityRepository.findAll(example,pageable);
Page<CareFacilityDTO> careFacilityDTOPage = getCaFacilityDTOPage(careFacilityPage);
return careFacilityDTOPage;
querydsl方式:
QCareFacility qCareFacility = QCareFacility.careFacility;
Predicate predicate = qCareFacility.careFacilityId.isNotNull();
//JPAQuery<CareFacility> jpaQuery = new JPAQuery<>();
if(!StringUtils.isEmpty(facilityDynamicVM.getFacilityType())){
FacilityTypeEnum facilityTypeEnum = FacilityTypeEnum.checkEnum(facilityDynamicVM.getFacilityType());
predicate = ExpressionUtils.and(predicate,qCareFacility.facilityType.eq(facilityTypeEnum));
//jpaQuery.where(qCareFacility.facilityType.eq(facilityTypeEnum));
}
if(!StringUtils.isEmpty(facilityDynamicVM.getCountyCode())){
predicate = ExpressionUtils.and(predicate,qCareFacility.businessAdd.countyCode.eq(facilityDynamicVM.getCountyCode()));
//jpaQuery.where(qCareFacility.businessAdd.countyCode.eq(facilityDynamicVM.getCountyCode()));
}
if(!StringUtils.isEmpty(facilityDynamicVM.getCareFacilityName())){
predicate = ExpressionUtils.and(predicate,qCareFacility.careFacilityName.like("%" +facilityDynamicVM.getCareFacilityName()+"%"));
//jpaQuery.where(qCareFacility.careFacilityName.like(facilityDynamicVM.getCareFacilityName()));
}
Pageable pageable = PageRequest.of(facilityDynamicVM.getPage(), facilityDynamicVM.getSize());
Page<CareFacility> careFacilityPage = careFacilityRepository.findAll(predicate,pageable);
Page<CareFacilityDTO> careFacilityDTOPage = getCaFacilityDTOPage(careFacilityPage);
// QueryResults<CareFacility> queryResults = jpaQuery.fetchResults();
// Page<CareFacility> careFacilityPage = new PageImpl<>(queryResults.getResults());
// Page<CareFacilityDTO> careFacilityDTOPage = getCaFacilityDTOPage(careFacilityPage);
return careFacilityDTOPage;