Spring Data Jpa

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;





  



原文地址:https://www.cnblogs.com/huanzei/p/5555219.html