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实现鼠标滑过预览图片大图效果的方法
Apr 26 jQuery
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
Jun 26 jQuery
JQuery EasyUI的一些常用组件
Jul 12 jQuery
jQuery Autocomplete简介_动力节点Java学院整理
Jul 17 jQuery
jQuery实现手势解锁密码特效
Aug 14 jQuery
jquery如何实现点击空白处隐藏元素
Dec 05 jQuery
jQuery实现左右两个列表框的内容相互移动功能示例
Jan 27 jQuery
javascript/jquery实现点击触发事件的方法分析
Nov 11 jQuery
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
Feb 04 jQuery
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
jQuery实时统计输入框字数及限制
Jun 24 jQuery
JS JQuery获取data-*属性值方法解析
Sep 01 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
php 动态执行带有参数的类方法
2009/04/10 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
JavaScript 继承详解(四)
2009/07/13 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
JavaScript数组和循环详解
2015/04/27 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
js图片上传的封装代码
2017/08/01 Javascript
js下拉菜单生成器dropMenu使用方法详解
2017/08/01 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Python异常处理操作实例详解
2018/08/28 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
python tkinter canvas使用实例
2019/11/04 Python
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
安全施工责任书
2014/08/25 职场文书
写给导师的自荐信
2015/03/06 职场文书
详解在OpenCV中如何使用图像像素
2022/03/03 Python