spring data jpa实现有条件的分页查询功能


前端部分代码。发送请求:

$('#grid').datagrid({iconCls: 'icon-forward',fit: true,border: false,rownumbers: true,striped: true,pageList: [30, 50, 100],pagination: true,toolbar: toolbar,url: "../../courier_pageQuery.action",idField: 'id',columns: columns,onDblClickRow: doDblClickRow
});

提交查询请求:

$("#searchBtn").click(function(){//将数据转换为json格式var params = $("#searchForm").serializeJson();//将json对象绑定到datagrid上,完成带有条件的查询请求$("#grid").datagrid('load',params);//关闭查询窗口$("#searchWindow").window('close');
});

Action:

//快递员分页查询
@Action(value="courier_pageQuery",results={@Result(name="success",type="json")})
public String pageQuery(){Pageable pageable = new PageRequest(page-1,rows);//封装条件查询对象SpecificationSpecification<Courier> specification = new Specification<Courier>(){@Override// Root 用于获取属性字段,CriteriaQuery可以用于简单条件查询,CriteriaBuilder 用于构造复杂条件查询public Predicate toPredicate(Root<Courier> root,CriteriaQuery<?> query, CriteriaBuilder cb) {//集合 用于封装查询条件List<Predicate> list = new ArrayList<Predicate>();//简单单表查询if(StringUtils.isNotBlank(courier.getCourierNum())){Predicate p1 = cb.equal(root.get("courierNum").as(String.class),courier.getCourierNum());list.add(p1);}if(StringUtils.isNotBlank(courier.getCompany())){Predicate p2 = cb.like(root.get("company").as(String.class),"%"+courier.getCompany()+"%");list.add(p2);}if(StringUtils.isNotBlank(courier.getType())){Predicate p3 = cb.equal(root.get("type").as(String.class),courier.getType());list.add(p3);}//多表查询Join<Courier,Standard> standardJoin = root.join("standard",JoinType.INNER);if(courier.getStandard().getName()!=null){Predicate p4 = cb.like(standardJoin.get("name").as(String.class),"%"+courier.getStandard().getName()+"%" );list.add(p4);}return cb.and(list.toArray(new Predicate[0]));}};//调用业务层,返回PagePage<Courier> pageData = courierService.findPageData(specification,pageable);//将返回page对象转换为datagrid所需要的数据格式Map<String,Object> result = new HashMap<String,Object>();result.put("total", pageData.getTotalElements());result.put("rows", pageData.getContent());ActionContext.getContext().getValueStack().push(result);return SUCCESS;
}

service层:

//快递员分页查询
@Override
public Page<Courier> findPageData(Specification<Courier> specification,Pageable pageable) {// TODO Auto-generated method stubreturn courierRepository.findAll(specification,pageable);
}

dao层:

public interface CourierRepository extends JpaRepository<Courier,Integer>,JpaSpecificationExecutor<Courier> {}

spring data jpa实现有条件的分页查询功能相关推荐

  1. Spring Data JPA 复杂/多条件组合分页查询

    推荐视频: http://www.icoolxue.com/album/show/358 public Map<String, Object> getWeeklyBySearch(fina ...

  2. Spring Data Jpa的JpaRepository的getOne()方法查询数据实体时报错could not initialize proxy

    问题描述:在使用Spring Data Jpa的JpaRepository的getOne()方法查询数据实体时报以下错误: org.hibernate.LazyInitializationExcept ...

  3. hql 查询关联对象_在spring data jpa中如何做报表统计查询?

    问题描述 之前有个简单的报表统计需求,如果用sql的话是比较简单的,但是基于spring data jpa还没有遇到好的解决方案,折腾半天用spring data提供的几种方式都不能解决,spring ...

  4. Spring Data JPA 必须掌握的 20+ 个查询关键字

    微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 又是小师弟的投稿,确是一个喜欢技术的朋友.以下为原文: 今天闲的无聊看 Spring Data JPA 官方文档的 ...

  5. Spring Data JPA实现多表的关联查询

    1.Spring Data JPA关系映射 对象关系映射(Object relational mapping)是指通过将对象状态映射到数据库列,来开发和维护对象和关系数据库之间的关系.它能够轻松处理( ...

  6. Spring Data JPA 动态拼接条件的通用设计模式

    记住官方文档永远是首选 import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import jav ...

  7. Spring Data JPA 从入门到精通~定义查询方法的配置方法

    定义查询方法的配置方法 由于 Spring JPA Repository 的实现原理是采用动态代理的机制,所以我们介绍两种定义查询方法,从方法名称中可以指定特定用于存储的查询和更新,或通过使用 @Qu ...

  8. Spring data JPA使用@formula注解使用、查询不到内容

    @Formula注解就是使用查询语句动态生成类的一个属性,是一个虚拟的列,其并不存储在数据库中. 以下为一个与数据表映射的实体: @Data @Entity @Table ( name =" ...

  9. 一篇总结的很好的Spring data jpa 文章,里面包含多种查询方式,可以结合api使用

    http://www.cnblogs.com/ityouknow/p/5891443.html

最新文章

  1. iSCSI原理和实现
  2. 2013秋东北计算机在线作业,2013秋奥鹏东北师范大学计算机应用基础第三次在线作业及答案.doc...
  3. Java 基础 之 关系运算符
  4. 基类的析构函数不能被继承。_为什么要把C++类中的析构函数声明为虚函数?
  5. hive底层原理 sql执行过程_Hive mapreduce SQL实现原理——SQL最终分解为MR任务,而group by在MR里和单词统计MR没有区别了-阿里云开发者社区...
  6. mysql aesc_MySQL学习笔记-2
  7. Lua 语言 快速入门
  8. 【Python】WindowsError的错误代码详解
  9. 会话的清除与建立网络磁盘
  10. mitmproxy https抓包的原理是什么?
  11. 和docket的第一次亲密接触
  12. Android实战——Activity超详细学习笔记
  13. 最全 MySQL 优化方法,从此优化不再难
  14. 实验室服务器系统设计,实验室教学管理系统设计与实现
  15. excel在线_如何把pdf转excel将文档保持原有格式
  16. java 解析m3u8的实例_ck播放器m3u8直连代码
  17. emoji粉色爱心符号_新的emoji又来袭!你们知道这些表情符号的真正含义吗?
  18. 再添近10个新冠知识图谱,OpenKG发布第二批开放数据集
  19. 我的Unity工具类---对象池
  20. 矿大赵银娣matlab,中国矿业大学教职工代表大会第一次会议暨工会会员.DOC

热门文章

  1. Github标星66.6k+:常见数据结构与算法的Python实现
  2. 2021年Kaggle所有赛事TOP方案汇总
  3. 荣获中国音视频产业大会「科技创新奖」,网易云信彰显行业领先水平
  4. 年度布道师颁奖|盘点2020年网易智企的布道先锋们
  5. LeetCode.每日一题今日份_392.判断子序列
  6. LeetCode_97.交错字符串_没懂
  7. JavaScript 读取CSV文件并转为js对象
  8. mysql中json_merge函数的使用?
  9. 应用MVP模式写出可维护的优美Android应用
  10. Android Studio常见报错及处理办法