经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
SpringData分页功能
来源:cnblogs  作者:Miya。  时间:2018/10/10 9:12:55  对本文有异议

在SpringData中实现分页功能我们需要将接口实现PagingAndSortingRepository这个接口提供了分页查询的方法

  1. Page<T> findAll(Pageable pageable); //分页查询(含排序功能)
  1. @Test
  2. public void Pagination() {
  3. int pageIndex = 1;// 前台传过来的当前页
  4. int pageSize = 5;// 每页需要的记录数
  5. /**
  6. * 不带排序写法: Pageable pageable = new PageRequest(pageIndex, pageSize);
  7. */
  8. // 按照年龄字段排序
  9. Order order = new Order(Direction.DESC, "age");
  10. Sort sort = new Sort(order);
  11. Pageable pageable = new PageRequest(pageIndex - 1, pageSize, sort);
  12. Page<Student> page = studentService.findAll(pageable);
  13. System.out.println("总记录数:" + page.getTotalElements());
  14. System.out.println("当前第几页:" + (page.getNumber() + 1));
  15. System.out.println("总页数:" + page.getTotalPages());
  16. System.out.println("当前页的List:" + page.getContent());
  17. System.out.println("当前页面的记录数:" + page.getNumberOfElements());
  18. for (Student student : page.getContent()) {
  19. System.out.println(student);
  20. }
  21. }

这样就可以简单的实现我们的分页了,但是瞬时间发现这个分页并不能带条件啊。

SpringData中给我们提供了一个接口,我们只需要将我们Dao层接口实现JpaSpecificationExecutor就可以达到带条件分页的效果

  1. @Test
  2. public void testJpaSpecificationExecutor(){
  3. int pageIndex = 1;
  4. int pagesize = 0;
  5. PageRequest pagerequest = new PageRequest(pageIndex - 1, pagesize);
  6. Specification<Student> specification = new Specification<Student>() {
  7. @Override
  8. public Predicate toPredicate(Root<Student> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  9. /**
  10. * Root<Student>:表示查询的实体
  11. * CriteriaQuery:可以从中得到root对象,即告知JPA criteria查询要查询哪一个实体类。还可以来添加查询条件。还可以结合EntityManager对象得到最终查询的TypedQuery对象。
  12. * CriteriaBuilder:用于创建Criteria相关对象的工厂。
  13. */
  14. //年龄属性
  15. Path<Integer> path = root.get("age");
  16. Predicate predicate = cb.gt(path, 5);//大于5
  17. return predicate;
  18. }
  19. };
  20. Page<Student> page = studentDao.findAll(specification, pagerequest);
  21. }
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号