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中.bind()、.live()、.delegate()和.on()之间的区别详解
Aug 01 jQuery
jQuery Easyui Treegrid实现显示checkbox功能
Aug 08 jQuery
JS+jQuery实现注册信息的验证功能
Sep 26 jQuery
jQuery EasyUI Layout实现tabs标签的实例
Sep 26 jQuery
jquery.pager.js实现分页效果
Jul 29 jQuery
Jquery 动态添加元素并添加点击事件实现过程解析
Oct 12 jQuery
jquery实现点击弹出对话框
Feb 08 jQuery
jquery实现烟花效果(面向对象)
Mar 10 jQuery
jQuery编写QQ简易聊天框
Aug 27 jQuery
JQuery基于FormData异步提交数据文件
Sep 01 jQuery
jQuery中getJSON跨域原理的深入讲解
Sep 02 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
php5.3 废弃函数小结
2010/05/16 PHP
php基础学习之变量的使用
2011/06/09 PHP
php实现的IMEI限制的短信验证码发送类
2015/05/05 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
js预载入和JavaScript Image()对象使用介绍
2011/08/28 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
Atom的python插件和常用插件说明
2018/07/08 Python
python如何制作英文字典
2019/06/25 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
Python中使用filter过滤列表的一个小技巧分享
2020/05/02 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
银行学习十八大感想
2014/01/11 职场文书
收款委托书范本
2014/09/11 职场文书
2014年学生会部门工作总结
2014/11/07 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
生产车间管理制度
2015/08/04 职场文书
python中print格式化输出的问题
2021/04/16 Python
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
Echarts如何重新渲染实例详解
2022/05/30 Javascript
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL