@Repository
public interface XtTasksSingleRepository extends JpaRepository<XtTasksSingle, Long> {
Page<XtTasksSingle> findAll(Specification<XtTasksSingle> specification, Pageable pageable);
}
@Override
public BaseResult<Page<XtTasksSingle>> findAllByIdCard(Param4XtTasks param4XtTasks) {
Pageable pageable = new PageRequest(param4XtTasks.getPageNum(), param4XtTasks.getPageSize(), null);
Specification<XtTasksSingle> specification = createSpecification(param4XtTasks.getKeyWord(), param4XtTasks.getStatus());
Page<XtTasksSingle> pageList = xtTasksSingleRepository.findAll(specification, pageable);
return BaseResult.success(pageList);
}
public Specification<XtTasksSingle> createSpecification(String keyWord, int status){
Specification<XtTasksSingle> specification1= (Root<XtTasksSingle> root, CriteriaQuery<?> query, CriteriaBuilder cb) ->{
List<Predicate> listKeyWord=new ArrayList<>();
if(StringUtils.isNotBlank(keyWord)){
//查詢的是類的屬性名,不是表的字段名
listKeyWord.add(cb.equal(root.get("idCard"),keyWord));
listKeyWord.add(cb.equal(root.get("fullName"),keyWord));
}
Predicate[] predicatesKeyWordArr=new Predicate[listKeyWord.size()];
Predicate predicatesKeyWord;
if(predicatesKeyWordArr.length > 0){
predicatesKeyWord = cb.or(listKeyWord.toArray(predicatesKeyWordArr));
}else{
predicatesKeyWord = cb.and(listKeyWord.toArray(predicatesKeyWordArr));
}
List<Predicate> listStatus = new ArrayList<>();
if(status > -1){
//查詢的是類的屬性名,不是表的字段名
listStatus.add(cb.equal(root.get("status"),status));
}
Predicate[] predicatesStatusArr=new Predicate[listStatus.size()];
Predicate predicatesStatus = cb.and(listStatus.toArray(predicatesStatusArr));
return query.where(predicatesKeyWord,predicatesStatus).getRestriction();
};
return specification1;
}