상속 스프링 데이터 JPA paSpecificationExecutor 달성 쿼리 조건

DAO :

 

패키지 com.tensquare.base.dao; 
수입 com.tensquare.base.pojo.Lable;
수입 org.springframework.data.jpa.repository.JpaRepository;
수입 org.springframework.data.jpa.repository.JpaSpecificationExecutor;
공중 인터페이스는 LableDao JpaRepository <LABLE 문자열> 연장 JpaSpecificationExecutor을 <LABLE> {

}

 

 

 

서비스:

 

/ ** 
단일 메소드 호출을 용이하게하기 위해 추출 * 동적 조건
* @param
* @return
* /
전용 규격 <LABLE> createSpecification합니다 (LABLE LABLE) {

) (새 새로운 사양 <LABLE>를 반환 {

@Override
공개 toPredicate 프레디 케이트 (루트 <LABLE> 루트, CriteriaQuery 쿼리, CriteriaBuilder의 CB) {<?>
일시적으로 수집 저장 // 쿼리
의 ArrayList <조건식> 목록 = 새로운 새로운 ArrayList를 <> ();
IF (lable.getLabelname () = 널 (null) && "를! ".equals (lable.getLabelname ())) {
술어 predicateA = cb.like (root.get ("labelName라고 "),"% "+ lable.getLabelname () +"% "); // WHERE XXX %의 추천 labelName라고 %
에는 list.add합니다 (predicateA);
}
(! lable.getState () = 널 (null) &&는 "". 동일 (lable.getState ())) {경우
술어 술어 = cb.equal (root.get ( "상태"), lable.getState ()); // 상태 = XXX
에는 list.add (술어);
}
//最终将查询条件拼好然后반환
술어 [] = 술어 새로운 술어 [는 list.size ()];
라벨 이름 %의 XXX % 및 상태 등 // = XXX; cb.and (list.toArray (조건))를 반환

}
};

}

不分页:
공개 목록 <LABLE> findSearch (LABLE lable가) { 
// 스프링 데이터 JPA使用JpaSpecificationExecutor构建条件查询
lableDao.findAll (createSpecification (lable가)) 반환;
}

分页:
공개 페이지 <LABLE> pageQuery (INT의 pageNum, INT 크기 LABLE lable가) {
//封装分页对象
페이징 가능한 페이징 = PageRequest.of (pageNum - 1 크기);
(,) 페이징 createSpecification (lable가) lableDao.findAll를 반환;
}



컨트롤러 :

@RequestMapping (값 = "/ 검색"METHOD = RequestMethod.POST) 
공개 결과 findSearch (@RequestBody LABLE의 lable가) {
일람 <LABLE> lables = lableService.findSearch (lable가);
새로운 결과 (사실, StatusCode.OK, "查询成功", lables)을 반환;
}

@RequestMapping (값 = "/ 검색 / {pageNum} / {크기}"METHOD = RequestMethod.POST)
공개 결과 pageQuery (@PathVariable INT pageNum @ PathVariable INT 크기 RequestBody LABLE의 lable가 @) {
페이지 <LABLE> 페이지 = lableService.pageQuery (pageNum, 크기 lable가);
새로운 결과를 반환 (사실, StatusCode.OK, "查询成功"새로운 PageResult <LABLE> (pages.getTotalElements (), pages.getContent ()));
}
 
   

 

추천

출처www.cnblogs.com/gdut-lss/p/11520072.html