您好,登錄后才能下訂單哦!
這篇文章主要介紹jQuery條件分頁代替離線查詢的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
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<Courier> specification = new Specification<Courier>() { @Override public Predicate toPredicate(Root<Courier> root, CriteriaQuery<?> query, CriteriaBuilder cb) { //root:根實體 query:排序,封裝條件 CriteriaBuilder:Predicate斷言工廠,產生Predicate對象 //添加過濾條件:添加快遞員編號條件 //p1:實體中屬性 p2:條件 List<Predicate> 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<Courier> 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<Courier> { }
以上是“jQuery條件分頁代替離線查詢的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。