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插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
May 13 jQuery
jQuery选择器中的特殊符号处理方法
Sep 08 jQuery
JavaScript实现离开页面前提示功能【附jQuery实现方法】
Sep 26 jQuery
jQuery简单实现对数组去重及排序操作实例
Oct 31 jQuery
将jquery.qqFace.js表情转换成微信的字符码
Dec 01 jQuery
jQuery中的$是什么意思及 $. 和 $().的区别
Apr 20 jQuery
jQuery实现的隔行变色功能【案例】
Feb 18 jQuery
使用异步controller与jQuery实现卷帘式分页
Jun 18 jQuery
jquery ajax 请求小技巧实例分析
Nov 11 jQuery
9种方法优化jQuery代码详解
Feb 04 jQuery
jQuery实现简易QQ聊天框
Feb 10 jQuery
jQuery三组基本动画与自定义动画操作实例总结
May 09 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/10/23 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
python和ruby,我选谁?
2017/09/13 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
Python用for循环实现九九乘法表
2018/05/31 Python
python_opencv用线段画封闭矩形的实例
2018/12/05 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
中间件的定义
2016/08/09 面试题
代理商会议邀请函
2014/01/27 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
嘉宾邀请函
2015/01/31 职场文书
新教师个人总结
2015/02/06 职场文书
教师节大会主持词
2015/07/06 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书