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


Posted in jQuery onAugust 17, 2017
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 相关文章推荐
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
简单实现jQuery上传图片显示预览功能
Jun 29 jQuery
jQuery实现IE输入框完成placeholder标签功能的方法
Sep 20 jQuery
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
Oct 19 jQuery
jQuery实现表格隔行换色
Sep 01 jQuery
jQuery扩展方法实现Form表单与Json互相转换的实例代码
Sep 05 jQuery
jQuery选择器之基本选择器用法实例分析
Feb 19 jQuery
基于jQuery实现可编辑的表格
Dec 11 jQuery
详解jQuery中的prop()使用方法
Jan 05 jQuery
jQuery实现简单飞机大战
Jul 05 jQuery
jQuery实现动态加载瀑布流
Sep 01 jQuery
jQuery实现计算器功能
Oct 19 jQuery
使用jquery的jsonp如何发起跨域请求及其原理详解
Aug 17 #jQuery
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
Aug 17 #jQuery
jQuery实现全选、反选和不选功能
Aug 16 #jQuery
jQuery取得元素标签名称小结(附代码)
Aug 16 #jQuery
深入研究jQuery图片懒加载 lazyload.js使用方法
Aug 16 #jQuery
jQuery中each循环的跳出和结束实例
Aug 16 #jQuery
基于JQuery的Ajax方法使用详解
Aug 16 #jQuery
You might like
给多个地址发邮件的类
2006/10/09 PHP
php输入流php://input使用浅析
2014/09/02 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
2014/01/27 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
简单理解vue中Props属性
2016/10/27 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
python实现用户登录系统
2016/05/21 Python
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
Python流程控制 while循环实现解析
2019/09/02 Python
python如何爬取网页中的文字
2020/07/28 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
光电信息专业应届生求职信
2013/10/07 职场文书
自考毕业自我鉴定
2014/03/18 职场文书
会计毕业生自荐书
2014/06/12 职场文书
化工专业自荐书
2014/06/16 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书