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+ThinkPHP+Ajax实现即时消息提醒功能实例代码
Mar 21 jQuery
JQuery 获取Dom元素的实例讲解
Jul 08 jQuery
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
Sep 22 jQuery
jQuery中内容过滤器简单用法示例
Mar 31 jQuery
jQuery实现每隔一段时间自动更换样式的方法分析
May 03 jQuery
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
Feb 14 jQuery
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
Mar 06 jQuery
详解jQuery中的getAll()和cleanData()
Apr 15 jQuery
jQuery控制input只能输入数字和两位小数的方法
May 16 jQuery
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
jQuery实现的移动端图片缩放功能组件示例
May 01 jQuery
html5以及jQuery实现本地图片上传前的预览代码实例讲解
Mar 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
PHP设计模式之工厂模式实例总结
2017/09/01 PHP
PHP使用Redis实现Session共享的实现示例
2019/05/12 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
Highcharts入门之简介
2016/08/02 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
python 线程的暂停, 恢复, 退出详解及实例
2016/12/06 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
win10 64bit下python NLTK安装教程
2018/09/19 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
优秀大学生推荐信范文
2013/11/28 职场文书
大学生志愿者感言
2014/01/15 职场文书
工程专业应届生求职信
2014/02/19 职场文书
运动会加油稿20字
2014/11/15 职场文书
2014年度工作总结报告
2014/12/15 职场文书
扬州个园导游词
2015/02/06 职场文书
Python利用FlashText算法实现替换字符串
2022/03/31 Python
Python获取字典中某个key的value
2022/04/13 Python