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) |
|