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 13 jQuery
jquery dataTable 后台加载数据并分页实例代码
Jun 07 jQuery
jQuery简介_动力节点Java学院整理
Jul 04 jQuery
使用jquery+iframe做一个ajax上传效果(实例)
Aug 24 jQuery
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
Sep 20 jQuery
jQuery EasyUI 折叠面板accordion的使用实例(分享)
Dec 25 jQuery
使用jQuery 操作table 完成单元格合并的实例
Dec 27 jQuery
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 jQuery
关于jquery layui弹出层的使用方法
Apr 21 jQuery
关于jquery中attr()和prop()方法的区别
May 28 jQuery
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
jquery制作的移动端购物车效果完整示例
Feb 24 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面向对象全攻略 (九)访问类型
2009/09/30 PHP
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
ThinkPHP路由详解
2015/07/27 PHP
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python字符串的常用操作方法小结
2016/05/21 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
旅游管理毕业生自荐信
2013/11/05 职场文书
便利店投资的创业计划书
2014/01/12 职场文书
创意活动策划书
2014/01/15 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
2015年度党风廉政建设工作情况汇报
2015/01/02 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
交通安全教育心得体会
2016/01/15 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
七年级写作指导之游记作文
2019/10/07 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android