jpa 分页,排序,过滤

@RequestMapping(value="catalog")
public String catalog(Model model,
@RequestParam(value="category",
defaultValue="全部") final String category,
@RequestParam(value="goodsName",defaultValue="%") final String goodsName,
@RequestParam(value="sortColumn",defaultValue="updateTime") final String sortColumn,
@RequestParam(value="desc",defaultValue="desc") final String desc,
@RequestParam(value="pageNum", defaultValue="0") int pageNum,
@RequestParam(value="pageSize", defaultValue="8") int pageSize){
Pageable pageable = new PageRequest(pageNum, pageSize);
DataExDicRepository dicService = BeanFactory.getBean(DataExDicRepository.class);
Page<DataExApiGoods> dacpApiPage= dataExApiGoodsRepository.findAll(new Specification<DataExApiGoods>(){

@Override
public Predicate toPredicate(Root<DataExApiGoods> root,
CriteriaQuery<?> query, CriteriaBuilder cb) {
/*List<Predicate> predicate = new ArrayList<Predicate>();
            if(!"全部".equals(category)){
               predicate.add(cb.equal(root.get("dataExApi").get("category").as(String.class), category)); 
            }
            predicate.add(cb.like(root.get("goodsName").as(String.class), "%"+goodsName+"%"));                 
              
            Predicate[] p = new Predicate[predicate.size()];
                return cb.and(predicate.toArray(p));  */

Predicate p1 = null;
if(!"全部".equals(category)){
p1 = cb.equal(root.get("dataExApi").get("category").as(String.class), category);
}
Predicate p2 = cb.like(root.get("goodsName").as(String.class), "%"+goodsName+"%");
    if(p1==null){
    query.where(cb.and(p2));
    }else{
    query.where(cb.and(p1,cb.and(p2)));    
    }
    if("desc".equals(desc)){
    query.orderBy(cb.desc(root.get(sortColumn).as(String.class)));        
    }else if("asc".equals(desc)){
    query.orderBy(cb.asc(root.get(sortColumn).as(String.class)));    
    }
    return query.getRestriction();


}

},pageable);

List<DacpDataexDic> dacpDicList=dicService.findAll();
model.addAttribute("dacpDicList",dacpDicList);
model.addAttribute("page",dacpApiPage);
model.addAttribute("menuName","catalog");
model.addAttribute("category",category);
model.addAttribute("goodsName","%".equals(goodsName)?"":goodsName);
return "dataex/catalog/catalog";
}

猜你喜欢

转载自zhpeace.iteye.com/blog/2262923
今日推荐