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绘制ScrollColumn2D图效果示例【附demo源码下载】
Mar 22 jQuery
jQuery设置图片等比例缩小的方法
Apr 29 jQuery
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
jQuery Validate插件ajax方式验证输入值的实例
Dec 21 jQuery
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
Dec 11 jQuery
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
JS拖动选择table里的单元格完整实例【基于jQuery】
May 28 jQuery
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
jquery实现简单拖拽效果
Jul 20 jQuery
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 jQuery
JS+JQuery实现无缝连接轮播图
Dec 30 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
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
php生成WAP页面
2006/10/09 PHP
php读取xml实例代码
2010/01/28 PHP
PHP计数器的实现代码
2013/06/08 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
前台js调用后台方法示例
2013/12/02 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
nodeJs项目在阿里云的简单部署
2020/11/27 NodeJs
关于uniApp editor微信滑动问题
2021/01/15 Javascript
[02:10]DOTA2亚洲邀请赛 EG战队出场宣传片
2015/02/07 DOTA
[49:59]KG vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
Python列表list数组array用法实例解析
2014/10/28 Python
Python中线程编程之threading模块的使用详解
2015/06/23 Python
如何在Python中编写并发程序
2016/02/27 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
在Python中增加和插入元素的示例
2018/11/01 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
ubuntu上安装python的实例方法
2019/09/30 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
副总经理工作职责
2013/11/28 职场文书
药品业务员岗位职责
2014/04/17 职场文书
股东授权委托书范文
2014/09/13 职场文书