jQuery条件分页 代替离线查询(附代码)

前端之家收集整理的这篇文章主要介绍了jQuery条件分页 代替离线查询(附代码)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

<div class="jb51code">
<pre class="brush:js;">
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Join;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

@Action("courierAction_pageQuery")
public String pageQuery() throws Exception {
Pageable pageable = new PageRequest(page-1,rows);
final String courierNum = model.getCourierNum();
final String company = model.getCompany();
final String type = model.getType();
final Standard standard = model.getStandard();

//相当于DetchedCriteria对象.通过specification封装过滤条件
Specification specification = new Specification() {

@Override
public Predicate toPredicate(Root root,CriteriaQuery<?> query,CriteriaBuilder cb) {
//root:根实体 query:排序,封装条件 CriteriaBuilder:Predicate断言工厂,产生Predicate对象
//添加过滤条件:添加快递员编号条件
//p1:实体中属性 p2:条件
List list = new ArrayList<>();
if(StringUtils.isNotBlank(courierNum)){
Predicate p1 = cb.equal(root.get("courierNum").as(String.class),courierNum);
list.add(p1);
}
if(StringUtils.isNotBlank(company)){
Predicate p2 = cb.equal(root.get("company").as(String.class),company);
list.add(p2);
}
if(StringUtils.isNotBlank(type)){
Predicate p3 = cb.equal(root.get("type").as(String.class),type);
list.add(p3);
}
//sql : select * from T_COURIER t inner join t_Standard s on t.c_standard_id = s.c_id
// where s.c_name = '标准一(100公斤)';
//JPQL: from Courier c inner join c.standard s where s.name = "";
if(standard!=null && StringUtils.isNotBlank(standard.getName())){
//返回关联对象
Join<Object,Object> join = root.join("standard");
Predicate p4 = cb.equal(join.get("name").as(String.class),standard.getName());
list.add(p4);
}
if(list.size()==0){
return null;
}
//list集合转为数组
Predicate[] restrictions = new Predicate[list.size()];
restrictions = list.toArray(restrictions);
return cb.and(restrictions);
}
};
Page page = courierService.findAll(specification,pageable);

Map<String,Object> map = new HashMap<>();
map.put("total",page.getTotalElements());
map.put("rows",page.getContent());

//将fixedares集合属性排除掉,不转json
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[]{"fixedAreas"});

String json = JSONObject.fromObject(map,jsonConfig).toString();

ServletActionContext.getResponse().setContentType("text/json;charset=utf-8");
ServletActionContext.getResponse().getWriter().write(json);
return NONE;
}
Dao:
public interface CourierDao extends JpaRepository<Courier,Integer>,JpaSpecificationExecutor {

}

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助~如果有疑问大家可以留言交流,谢谢大家对编程之家的支持!

原文链接:https://www.f2er.com/jquery/37052.html

猜你在找的jQuery相关文章