jQuery條件分頁 代替離線查詢(附代碼)
更新時(shí)間:2017年08月17日 14:12:38 投稿:sss
這篇文章主要介紹了jQuery條件分頁代替離線查詢,通過代碼實(shí)例讓讀者更深入了解該功能的操作,具體操作步驟大家可查看下文的詳細(xì)講解,感興趣的小伙伴們可以參考一下。
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對象.通過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對象
//添加過濾條件:添加快遞員編號條件
//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)對象
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> {
}
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助~如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持!
相關(guān)文章
jquery仿百度經(jīng)驗(yàn)滑動(dòng)切換瀏覽效果
本文給大家分享的是使用jQuery實(shí)現(xiàn)仿百度經(jīng)驗(yàn)華東切換瀏覽效果,非常的炫酷,推薦給大家。有需要的小伙伴可以參考下2015-04-04
jQuery.ajax 跨域請求webapi設(shè)置headers的解決方案
需要通過服務(wù)器端設(shè)置響應(yīng)頭、正確響應(yīng)options請求,正確設(shè)置 JavaScript端需要設(shè)置的headers信息方能實(shí)現(xiàn),本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08
原生Aajax 和jQuery Ajax 寫法個(gè)人總結(jié)
AJAX:即“Asynchronous Javascript And XML”(異步JavaScript和XML),是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。本文重點(diǎn)給大家介紹原生Aajax 和jQuery Ajax 個(gè)人總結(jié),一起看看吧2017-03-03
PHP+jQuery+Ajax實(shí)現(xiàn)多圖片上傳效果
我們在本文中用到一個(gè)Ajax表單提交插件:jqery.form.js,有高人修改了幾行代碼并改名為:jquery.wallform.js,直接拿來用。下面我們就來看看這款神奇的jQuery插件吧。2015-03-03
實(shí)例詳解jQuery表單驗(yàn)證插件validate
validate插件是一個(gè)基于jquery的表單驗(yàn)證插件了里面有許多的常用的一些驗(yàn)證方法我們可以直接調(diào)用,具體的我們一起來看看2016-01-01

