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 EasyUI 组件加上“清除”功能实例详解
Apr 11 jQuery
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 jQuery
jQuery实现的简单在线计算器功能
May 11 jQuery
jQuery常见面试题之DOM操作详析
Jul 05 jQuery
jQuery:unbind方法的使用详解
Aug 14 jQuery
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
jQuery实现表单动态添加与删除数据操作示例
Jul 03 jQuery
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
Apr 04 jQuery
jQuery层叠选择器用法实例分析
Jun 28 jQuery
jquery树形插件zTree高级使用详解
Aug 16 jQuery
jQuery实现轮播图源码
Oct 23 jQuery
jQuery实现简单全选框
Sep 13 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
PHPMailer邮件发送的实现代码
2013/05/04 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
为什么JS中eval处理JSON数据要加括号
2015/04/13 Javascript
JavaScript实现多个重叠层点击切换效果的方法
2015/04/24 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
AngularJS实现的锚点楼层跳转功能示例
2018/01/02 Javascript
vuex 项目结构目录及一些简单配置介绍
2018/04/08 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
linux下安装easy_install的方法
2013/02/10 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
Python类class参数self原理解析
2020/11/19 Python
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
比利时买床:Beter Bed
2017/12/06 全球购物
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
数据库笔试题
2013/05/09 面试题
大学生优秀的自我评价分享
2013/10/22 职场文书
车间副主任岗位职责
2013/12/24 职场文书
协议书模板
2014/04/23 职场文书
竞选卫生委员演讲稿
2014/04/28 职场文书
战略合作意向书
2014/07/29 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书
2014全年工作总结
2014/11/27 职场文书
民政工作个人总结
2015/02/28 职场文书
创业计划书之寿司
2019/07/19 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
室外天线与收音机天线杆接合方法
2022/04/05 无线电
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS