推荐视频:

http://www.icoolxue.com/album/show/358

    public Map<String, Object> getWeeklyBySearch(final Map<String, String> serArgs,String pageNum, String pageSize) throws Exception {// TODO Auto-generated method stubMap<String,Object> resultMap=new HashMap<String, Object>();// 判断分页条件pageNum = TextUtils.isNotBlank(pageNum) ? pageNum : "1";pageSize = TextUtils.isNotBlank(pageSize) ? pageSize : "10";// 分页时的总页数、每页条数、排序方式、排序字段Pageable StuPageable = PageUtils.buildPageRequest(Integer.valueOf(pageNum),Integer.valueOf(pageSize), new Sort(Direction.DESC, new String[] { "xmzbsj","lstProinfo.proId"}));// 按照条件进行分页查询,根据StuPageable的分页方式     Page<Weekly> StuPage = proWeeklyDao.findAll(new Specification<Weekly>() {public Predicate toPredicate(Root<Weekly> root, CriteriaQuery<?> query, CriteriaBuilder cb) {List<Predicate> lstPredicates = new ArrayList<Predicate>();if (TextUtils.isNotBlank(serArgs.get("xmmc"))) {lstPredicates.add(cb.like(root.get("lstProinfo").get("xmmc").as(String.class),  "%" + serArgs.get("xmmc") + "%"));}if (TextUtils.isNotBlank(serArgs.get("xmzbqssj"))) {lstPredicates.add(cb.greaterThanOrEqualTo(root.get("xmzbsj").as(String.class),serArgs.get("xmzbqssj")));}if (TextUtils.isNotBlank(serArgs.get("xmzbjzsj"))) {lstPredicates.add(cb.lessThanOrEqualTo(root.get("xmzbsj").as(String.class),serArgs.get("xmzbjzsj")));}Predicate[] arrayPredicates = new Predicate[lstPredicates.size()];return cb.and(lstPredicates.toArray(arrayPredicates));}}, StuPageable);     // 按照条件进行分页查询resultMap = PageUtils.getPageMap(StuPage);return resultMap;}

buildPageRequest()方法,导入的包,下面是自己写的方法

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;

     * @param pageNum 当前页* @param pageSize 每页条数* @param sortType 排序字段* @param direction 排序方向*/public static PageRequest buildPageRequest(int pageNum, int pageSize, String sortType, String direction) {Sort sort = null;if (!TextUtils.isNotBlank(sortType)) {return new PageRequest(pageNum - 1, pageSize);} else if (TextUtils.isNotBlank(direction)) {if (Direction.ASC.equals(direction)) {sort = new Sort(Direction.ASC, sortType);} else {sort = new Sort(Direction.DESC, sortType);}return new PageRequest(pageNum - 1, pageSize, sort);} else {sort = new Sort(Direction.ASC, sortType);return new PageRequest(pageNum - 1, pageSize, sort);}}

  public static PageRequest buildPageRequest(int pageNum, int pageSize, String sortType) {
    return buildPageRequest(pageNum, pageSize, sortType, null);
  }

 

getPageMap()方法:

JPA的Page也是集合,获取Page集合里的值,最后获取到的这些(key,value)

    /*** 封装分页数据到Map中。*/public static Map<String, Object> getPageMap(Page<?> objPage) {Map<String, Object> resultMap = new HashMap<String, Object>();resultMap.put(Constants.PAGE_RESULT_LIST, objPage.getContent()); // 数据集合,符合查询条件的所有记录数据resultMap.put(Constants.PAGE_TOTAL_NUM, objPage.getTotalElements()); // 总记录数resultMap.put(Constants.PAGE_TOTAL_PAGE, objPage.getTotalPages()); // 总页数resultMap.put(Constants.PAGE_NUM, objPage.getNumber()); // 当前页码resultMap.put(Constants.PAGE_SIZE, objPage.getSize()); // 每页显示数量return resultMap;}

转载于:https://www.cnblogs.com/Donnnnnn/p/5857229.html

Spring Data JPA 复杂/多条件组合分页查询相关推荐

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

    spring data jpa实现有条件的分页查询功能 前端部分代码.发送请求: $('#grid').datagrid({iconCls: 'icon-forward',fit: true,bord ...

  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 And 和 Or 组合使用的简单方式

    最近在做毕设,今天开始实现搜索功能,最开始的时候是打算上es的话,残酷的现实告诉我时间不够,所以还是简单的使用关系型数据库的模糊查询吧. 在对对应的Jpa接口进行测试的时候,我发现他的运行结果不同预期 ...

最新文章

  1. 李飞飞团队CVPR论文:让AI识别语义空间关系(附论文、实现代码)
  2. 干货丨 从遗传算法到强化学习,一文介绍五大生物启发式学习算法
  3. mciSendString 的两个小坑
  4. 使用多个JFrame:好的还是不好的做法? [关闭]
  5. 《信息学奥赛一本通 提高篇》
  6. php mysql表单源码_PHP表单数据写入MySQL数据库的代码
  7. 从医生看病和快餐店点餐理解Node.js的事件驱动
  8. Hive表中加载数据的5中方式
  9. 复旦计算机系统基础课件,复旦大学软件工程考研(MSE)计算机系统基础复习资料PPT演示课件...
  10. 达梦数据库工程师培训实战教程(主备集群、读写分离、共享集群)
  11. 录制GIF动画 MAC
  12. 论文投稿指南——中文核心期刊
  13. 微软解决Office兼容性问题 补丁包 转帖之www.it.com.cn
  14. The requested URL /xxxx.html was not found on this server web项目报错
  15. 华芯超算技术负责人分享分布式存储技术核心
  16. Sentinel-2批量大气校正_基于Sen2Cor
  17. Qt在Win下调用系统的软键盘,区分win7\win8\win10
  18. 题解 修改字符串 DDP基础题
  19. Istio - 集成ELK - HPE_INVALID_METHOD, lumberjack protocol error
  20. dash linux命令,Linux shell语言——dash和bash

热门文章

  1. CentOS 5.6配置PPTP+Radius+Daloradius认证服务器傻瓜教程
  2. Java程序员,上班那点事儿--程序员也是一般人
  3. esp32摄像显示时间_物联网平台开发难学吗?掌握ESP32帮你1分钟入门
  4. 包红b2c模块 flutter与原生交互
  5. com.tadu.android中文,塔读文学(com.tadu.android) - 6.68 - 应用 - 酷安
  6. php加mysql分页_php mysql 分页函数
  7. powershell设置了权限依旧无法运行脚本_没用的知识汇总+1 Windows 权限维持汇总...
  8. Nvidia的CUDA库现在恢复使用了
  9. iOS 11开发教程(八)定制iOS11应用程序图标
  10. AppleWatch开发教程之调试程序使用帮助文档