您的位置:首页 > 其它

jpa 分页,排序,过滤

2015-12-09 15:51 316 查看
@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";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: