spring data jpa实现有条件的分页查询功能
生活随笔
收集整理的這篇文章主要介紹了
spring data jpa实现有条件的分页查询功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
spring data jpa實現有條件的分頁查詢功能
前端部分代碼。發送請求:
$('#grid').datagrid({iconCls: 'icon-forward',fit: true,border: false,rownumbers: true,striped: true,pageList: [30, 50, 100],pagination: true,toolbar: toolbar,url: "../../courier_pageQuery.action",idField: 'id',columns: columns,onDblClickRow: doDblClickRow });提交查詢請求:
$("#searchBtn").click(function(){//將數據轉換為json格式var params = $("#searchForm").serializeJson();//將json對象綁定到datagrid上,完成帶有條件的查詢請求$("#grid").datagrid('load',params);//關閉查詢窗口$("#searchWindow").window('close'); });Action:
//快遞員分頁查詢 @Action(value="courier_pageQuery",results={@Result(name="success",type="json")}) public String pageQuery(){Pageable pageable = new PageRequest(page-1,rows);//封裝條件查詢對象SpecificationSpecification<Courier> specification = new Specification<Courier>(){@Override// Root 用于獲取屬性字段,CriteriaQuery可以用于簡單條件查詢,CriteriaBuilder 用于構造復雜條件查詢public Predicate toPredicate(Root<Courier> root,CriteriaQuery<?> query, CriteriaBuilder cb) {//集合 用于封裝查詢條件List<Predicate> list = new ArrayList<Predicate>();//簡單單表查詢if(StringUtils.isNotBlank(courier.getCourierNum())){Predicate p1 = cb.equal(root.get("courierNum").as(String.class),courier.getCourierNum());list.add(p1);}if(StringUtils.isNotBlank(courier.getCompany())){Predicate p2 = cb.like(root.get("company").as(String.class),"%"+courier.getCompany()+"%");list.add(p2);}if(StringUtils.isNotBlank(courier.getType())){Predicate p3 = cb.equal(root.get("type").as(String.class),courier.getType());list.add(p3);}//多表查詢Join<Courier,Standard> standardJoin = root.join("standard",JoinType.INNER);if(courier.getStandard().getName()!=null){Predicate p4 = cb.like(standardJoin.get("name").as(String.class),"%"+courier.getStandard().getName()+"%" );list.add(p4);}return cb.and(list.toArray(new Predicate[0]));}};//調用業務層,返回PagePage<Courier> pageData = courierService.findPageData(specification,pageable);//將返回page對象轉換為datagrid所需要的數據格式Map<String,Object> result = new HashMap<String,Object>();result.put("total", pageData.getTotalElements());result.put("rows", pageData.getContent());ActionContext.getContext().getValueStack().push(result);return SUCCESS; }service層:
//快遞員分頁查詢 @Override public Page<Courier> findPageData(Specification<Courier> specification,Pageable pageable) {// TODO Auto-generated method stubreturn courierRepository.findAll(specification,pageable); }dao層:
public interface CourierRepository extends JpaRepository<Courier,Integer>,JpaSpecificationExecutor<Courier> {}總結
以上是生活随笔為你收集整理的spring data jpa实现有条件的分页查询功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring data jpa实现分页查
- 下一篇: 使用jQuery OCUpload实现e