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和CSS3实现APPLE TV海报视差效果
Jun 16 jQuery
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
Mui使用jquery并且使用点击跳转新窗口的实例
Aug 19 jQuery
jQuery获取复选框选中的当前行的某个字段的值
Sep 15 jQuery
jQuery实现切换隐藏与显示同时切换图标功能
Oct 29 jQuery
jquery实现企业定位式导航效果
Jan 01 jQuery
基于jQuery实现的设置文本区域的光标位置
Jun 15 jQuery
jQuery解析json格式数据示例
Sep 01 jQuery
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
Feb 27 jQuery
JQuery属性操作与循环用法示例
May 15 jQuery
jQuery中DOM常见操作实例小结
Aug 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
PHP备份/还原MySQL数据库的代码
2011/01/06 PHP
php异常处理技术,顶级异常处理器
2012/06/13 PHP
php从memcache读取数据再批量写入mysql的方法
2014/12/29 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
node.js从数据库获取数据
2016/05/08 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python文件操作方法详解
2020/02/09 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
海蓝之谜英国官网:La Mer英国
2020/01/15 全球购物
护理专业的自荐信
2013/10/22 职场文书
乔迁宴答谢词
2014/01/21 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
大学学生会竞选演讲稿
2014/04/25 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
网络营销计划
2015/01/17 职场文书
二年级上册数学教学计划
2015/01/20 职场文书