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导航条固定定位效果实例代码
May 26 jQuery
jQuery实现全选、反选和不选功能
Aug 16 jQuery
Mui使用jquery并且使用点击跳转新窗口的实例
Aug 19 jQuery
jquery操作ul的一些操作笔记整理(干货)
Aug 31 jQuery
判断jQuery是否加载完成,没完成继续判断的解决方法
Dec 06 jQuery
jQuery动态添加li标签并添加属性和绑定事件方法
Feb 24 jQuery
jquery+php后台实现省市区联动功能示例
May 23 jQuery
jQuery实现动态加载(按需加载)javascript文件的方法分析
May 31 jQuery
jQuery实现获取多选框的值示例
Feb 07 jQuery
jQuery加PHP实现图片上传并提交的示例代码
Jul 16 jQuery
jquery实现抽奖功能
Oct 22 jQuery
jQuery实现简单轮播图效果
Dec 27 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
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
Yii2中SqlDataProvider用法示例
2016/09/22 PHP
Ext grid 添加右击菜单
2009/11/26 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
nodeJS实现路由功能实例代码
2017/06/08 NodeJs
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
2020/02/10 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
[02:15]你好,这就是DOTA!
2015/08/05 DOTA
Python随机生成彩票号码的方法
2015/03/05 Python
浅析Python中的多条件排序实现
2016/06/07 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
python 字符串只保留汉字的方法
2018/11/16 Python
使用python实现抓取腾讯视频所有电影的爬虫
2019/04/15 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
详解Python的循环结构知识点
2019/05/20 Python
python 命名规范知识点汇总
2020/02/14 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
python+OpenCV实现图像拼接
2020/03/05 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
机械设计职业生涯规划书
2013/12/27 职场文书
自动化专业职业生涯规划书范文
2014/01/16 职场文书
大学运动会入场词
2014/02/22 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
个人函授自我鉴定
2014/03/25 职场文书
2015年社区民政工作总结
2015/04/21 职场文书
安全教育主题班会教案
2015/08/12 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书