jpa动态查询

原生方式

        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;

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值