Spring Data Jpa - EasyUi Datagrid 分页简单实现(二)
1. 这部分结合了条件查询功能。
2. 首先dao层级需要继承JpaSpecificationExecutor接口。
@Repository public interface SaTcapacitorDao extends JpaSpecificationExecutor<SaTcapacitor>,
JpaRepository<SaTcapacitor, Long> {//第一步,继承JpaSpecificationExecutor接口
}
3. 创建分页请求。
private PageRequest buildPageRequest(int pageNumber, int pagzSize, String sortType) {//第二步,创建分页请求
Sort sort = null;
if ("auto".equals(sortType)) {
sort = new Sort(Sort.Direction.ASC, "nId");
} else if ("factoryBefore".equals(sortType)) {
sort = new Sort(Sort.Direction.ASC, "factoryBefore");
}
return new PageRequest(pageNumber - 1, pagzSize, sort);
}
4. 创建动态查询条件组合。
Specification<SaTcapacitor> spec = new Specification<SaTcapacitor>() {
@Override
public Predicate toPredicate(Root<SaTcapacitor> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
List<Predicate> list = new ArrayList<Predicate>();
if(searchData.getSearchVcType()!=null && searchData.getSearchVcType()!="" ){
list.add(criteriaBuilder.equal(root.get("vcType").as(String.class), searchData.getSearchVcType()));
}
Predicate[] p = new Predicate[list.size()];
return criteriaBuilder.and(list.toArray(p));
}
};
5. 调用
PageRequest pageRequest = buildPageRequest(page,rows,"auto");
Page<SaTcapacitor> p = saTcapacitorDao.findAll(spec,pageRequest);//分页按条件查询
//拼接返回datagrid的map
List<SaTcapacitor> listCount = saTcapacitorDao.findAll();//查询总数
Integer total = listCount.size();
Map map = new HashMap();
map.put("total", total);
map.put("rows", p.getContent());
return map;