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封装的分页组件
Jun 26 jQuery
jQuery实现点击关注和取消功能
Jul 03 jQuery
jquery版轮播图效果和extend扩展
Jul 18 jQuery
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
Aug 01 jQuery
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
使用jquery DataTable和ajax向页面显示数据列表的方法
Aug 09 jQuery
jQuery实现轮播图及其原理详解
Apr 12 jQuery
jQuery实现鼠标移入移出事件切换功能示例
Sep 06 jQuery
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
Jan 09 jQuery
jquery实现聊天机器人
Feb 08 jQuery
JavaScript或jQuery 获取option value值方法解析
May 12 jQuery
jQuery+ajax实现文件上传功能
Dec 22 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
VML绘图板②脚本--VMLgraph.js、XMLtool.js
2006/10/09 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
php弹出提示框的是实例写法
2019/09/26 PHP
jquery 获取json数据实现代码
2009/04/27 Javascript
优化innerHTML操作(提高代码执行效率)
2011/08/20 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
Node.js之readline模块的使用详解
2019/03/25 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
vue使用swiper.js重叠轮播组建样式
2019/11/14 Javascript
详解JS深拷贝与浅拷贝
2020/08/04 Javascript
python使用matplotlib绘制雷达图
2019/10/18 Python
Python 切分数组实例解析
2019/11/07 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
应届生污水处理求职信
2013/11/06 职场文书
应届大学生求职的自我评价
2013/11/17 职场文书
投标邀请书范文
2014/01/31 职场文书
《孔子游春》教学反思
2014/02/25 职场文书
药剂专业毕业生求职信
2014/06/24 职场文书
2014年质检工作总结
2014/11/26 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
代理词怎么写
2015/05/25 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
python神经网络Xception模型
2022/05/06 Python