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(); //相當(dāng)于DetchedCriteria對(duì)象.通過specification封裝過濾條件 Specification<Courier> specification = new Specification<Courier>() { @Override public Predicate toPredicate(Root<Courier> root, CriteriaQuery<?> query, CriteriaBuilder cb) { //root:根實(shí)體 query:排序,封裝條件 CriteriaBuilder:Predicate斷言工廠,產(chǎn)生Predicate對(duì)象 //添加過濾條件:添加快遞員編號(hào)條件 //p1:實(shí)體中屬性 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 = '標(biāo)準(zhǔn)一(100公斤)'; //JPQL: from Courier c inner join c.standard s where s.name = ""; if(standard!=null && StringUtils.isNotBlank(standard.getName())){ //返回關(guān)聯(lián)對(duì)象 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集合轉(zhuǎn)為數(shù)組 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集合屬性排除掉,不轉(zhuǎn)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> { }
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助~如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持!
相關(guān)文章
jQuery is not defined 錯(cuò)誤原因與解決方法小結(jié)
今天在測(cè)試一個(gè)程序的時(shí)候,明顯已經(jīng)加載了jquery但總是提示jQuery is not defined,經(jīng)過多方測(cè)試終于發(fā)現(xiàn)了問題,這里簡(jiǎn)單總結(jié)一下,需要的朋友可以參考下2017-03-03jQuery團(tuán)購倒計(jì)時(shí)特效實(shí)現(xiàn)方法
這篇文章主要介紹了jQuery團(tuán)購倒計(jì)時(shí)特效實(shí)現(xiàn)方法,可實(shí)現(xiàn)相對(duì)固定時(shí)間的倒計(jì)時(shí)效果,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05JavaScript的jQuery庫插件的簡(jiǎn)要開發(fā)指南
這篇文章主要介紹了JavaScript的jQuery庫插件的簡(jiǎn)要開發(fā)指南,分為基于選擇器的插件和不基于選擇器的插件兩種情況,需要的朋友可以參考下2015-08-08jquery使用ColorBox彈出圖片組瀏覽層實(shí)例演示
本示例使用Jquery的ColorBox插件彈出圖片組瀏覽層,點(diǎn)擊會(huì)彈出頁中窗的效果同時(shí)帶有關(guān)閉及上一個(gè)下一個(gè)的切換,個(gè)人感覺相當(dāng)不錯(cuò)的彈出窗,感興趣的你可不要錯(cuò)過了哈2013-03-03使用jquery選擇器如何獲取父級(jí)元素、同級(jí)元素、子元素
這篇文章主要介紹了使用jquery選擇器如何獲取父級(jí)元素、同級(jí)元素、子元素,需要的朋友可以參考下2014-05-05jQuery模擬select實(shí)現(xiàn)下拉菜單功能
這篇文章主要介紹了jQuery模擬select實(shí)現(xiàn)下拉菜單功能,比較實(shí)用,需要的朋友可以參考下。2016-06-06jquery實(shí)現(xiàn)倒計(jì)時(shí)效果
這篇文章主要介紹了jquery實(shí)現(xiàn)倒計(jì)時(shí)效果,根據(jù)設(shè)計(jì)一個(gè)游戲引出的倒計(jì)時(shí)功能,需要的朋友可以參考下2015-12-12