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 specification = new Specification(){@Override// Root 用于获取属性字段,CriteriaQuery可以用于简单条件查询,CriteriaBuilder 用于构造复杂条件查询public Predicate toPredicate(Root root,CriteriaQuery query, CriteriaBuilder cb) {//集合 用于封装查询条件List list = new ArrayList();//简单单表查询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 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 pageData = courierService.findPageData(specification,pageable);//将返回page对象转换为datagrid所需要的数据格式Map result = new HashMap();result.put("total", pageData.getTotalElements());result.put("rows", pageData.getContent());ActionContext.getContext().getValueStack().push(result);return SUCCESS;
}

service层:

//快递员分页查询
@Override
public Page findPageData(Specification specification,Pageable pageable) {// TODO Auto-generated method stubreturn courierRepository.findAll(specification,pageable);
}

dao层:

public interface CourierRepository extends JpaRepository,JpaSpecificationExecutor {}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部