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 replace方法去空格
May 08 jQuery
bootstrap+jQuery实现的动态进度条功能示例
May 25 jQuery
利用jquery去掉时光轴头尾部线条的方法实例
Jun 16 jQuery
jQuery Validate格式验证功能实例代码(包括重名验证)
Jul 18 jQuery
jquery获取链接地址和跳转详解(推荐)
Aug 15 jQuery
Mui使用jquery并且使用点击跳转新窗口的实例
Aug 19 jQuery
基于jQuery的表单填充实例
Aug 22 jQuery
jQuery动态添加.active 实现导航效果代码思路详解
Aug 29 jQuery
jQuery+PHP实现上传裁剪图片
Jun 29 jQuery
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
May 17 jQuery
JQuery+drag.js上传图片并且实现图片拖曳
Nov 18 jQuery
详解jQuery的核心函数和事件处理
Feb 18 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 strtr() 函数使用说明
2008/11/21 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
为jQuery增加join方法的实现代码
2010/11/28 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
2014/07/02 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
跟老齐学Python之集合(set)
2014/09/24 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
唤醒头发毛囊的秘密武器:Grow Gorgeous
2016/08/28 全球购物
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
运动会通讯稿500字
2014/02/20 职场文书
管理工程专业求职信
2014/08/10 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
医院志愿者活动总结
2015/05/06 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
十二月早安励志心语大全
2019/12/03 职场文书