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

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

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

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

@Test
    public void testJpaSpecificationExecutor(){
        int pageIndex = 1;
        int pagesize = 0;
        PageRequest pagerequest = new PageRequest(pageIndex - 1, pagesize);
        Specification<Student> specification = new Specification<Student>() {
            @Override
            public Predicate toPredicate(Root<Student> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                /**
                 * Root<Student>:表示查询的实体
                 * CriteriaQuery:可以从中得到root对象,即告知JPA criteria查询要查询哪一个实体类。还可以来添加查询条件。还可以结合EntityManager对象得到最终查询的TypedQuery对象。
                 * CriteriaBuilder:用于创建Criteria相关对象的工厂。
                 */
                //年龄属性
                Path<Integer> path = root.get("age");
                Predicate predicate = cb.gt(path, 5);//大于5
                return predicate;
            }
        };
        Page<Student> page = studentDao.findAll(specification, pagerequest);
    }

SpringData分页功能的更多相关文章

  1. 简单封装分页功能pageView.js

    分页是一个很简单,通用的功能.作为一个有经验的前端开发人员,有义务把代码中类似这样公共的基础性的东西抽象出来,一来是改善代码的整体质量,更重要的是为了将来做类似的功能或者类似的项目,能减少不必要的重复 ...

  2. php对文本文件进行分页功能简单实现

    php对文本文件进行分页功能简单实现 <!DOCTYPE> <html> <head> <meta http-equiv="Content-type ...

  3. Asp.net MVC3表格共用分页功能

    在建立的mvc3项目中,在Razor(CSHTML)视图引擎下,数据会在表格中自动的生成,但分页没有好的控件实现,这里我们开发了设计了一个分页的模板,适合于没有数据提交和有数据提交的分页的分页. 第一 ...

  4. WinForm DataGridView分页功能

    WinForm 里面的DataGridView不像WebForm里面的GridView那样有自带的分页功能,需要自己写代码来实现分页,效果如下图: 分页控件  .CS: 1 using System; ...

  5. Net 分页功能的实现

    首先写一个接口   1 2 3 4 5 6 public interface IPagedList     {         int CurrentPageIndex { get; set; }   ...

  6. 自己封装的JS分页功能[用于搭配后台使用]

    * 2016.7.03 修复bug,优化代码逻辑 * 2016.5.25 修复如果找不到目标对象的错误抛出. * 2016.5.11 修复当实际页数(pageNumber)小于生成的页码间隔数时的bu ...

  7. 一行代码调用实现带字段选取+条件判断+排序+分页功能的增强ORM框架

    问题:3行代码 PDF.NET是一个开源的数据开发框架,它的特点是简单.轻量.快速,易上手,而且是一个注释完善的国产开发框架,受到不少朋友的欢迎,也在我们公司的项目中多次使用.但是,PDF.NET比起 ...

  8. jPList – 实现灵活排序和分页功能的 jQuery 插件

    jPList 是一个灵活的 jQuery 插件,可以用于任何 HTML 结构的排序,分页和筛选.它支持的数据源包括:PHP + MySQL,ASP.NET + SQL Server,PHP + SQL ...

  9. 【jQuery 分页】jQuery分页功能的实现

    自写的jQuery实现分页功能的分页组件: 功能效果如下: 分页组件就是上图中的三部分, 分别放在表格上部  和下部 . 其中, 1>>>页面的代码如下: product.jsp 其 ...

随机推荐

  1. linux下搭建lamp环境以及安装swoole扩展

    linux下搭建lamp环境以及安装swoole扩展   一.CentOS 6.5使用yum快速搭建LAMP环境 准备工作:先更新一下yum源  我安装的环境是:apache2.2.15+mysql5 ...

  2. LOJ #2547 Luogu P4517「JSOI2018」防御网络

    好像也没那么难写 LOJ #2547 Luogu P4517 题意 在一棵点仙人掌中等概率选择一个点集 求选出点集的斯坦纳树大小的期望 定义点仙人掌为不存在一个点在多个简单环中的连通图 斯坦纳树为在原 ...

  3. js原生事件

    js原生事件封装 // 事件处理对象 var EventUtil = { // 添加事件监听 add: function(element, type, callback){ if(element.ad ...

  4. python笔记(一)获取当前目录路径和文件

    一.获取当前路径 1.使用sys.argv[0] import sys print sys.argv[0]#输出#本地路径 2.os模块 import os print os.getcwd() #获取 ...

  5. TMS 控件测试

    //TMS 控件测试nxflpnl1: TNxFlipPanel; 控件 有一个标题的panel 可以随意收展 TNxBusy; 有很均匀分布的四块区域,但是不像 TFlowPanel nxhtmlb ...

  6. shell编程 之 实践出真知(代码实例)

    1,在任意一个文件夹里,新建10个空文件,文件名为t1.txt-t10.txt ,文件内容分别是11-20 ,就一行,然后把这个10个文件命名成t1.sh-t10.sh. 老司机版: $ for (( ...

  7. Latex 编辑数学公式——快速上手

    参考链接: https://blog.csdn.net/fansongy/article/details/45368915 特殊符号: https://blog.csdn.net/caiandyong ...

  8. golang 之 flag.String

    无论是c语言还是golang语言或是其他语言,启动应用程序时都可以带一些参数,然后系统根据传入的参数进行特点的工作.如:./main -b /home/backupdir -d true 那么如何更好 ...

  9. VS2008 debug可以编译过,Release No such file or directory

    1>正在生成代码1>e:\Source\VC\Զ\json\jsoncpp-src-0.6.0-rc2\src\lib_json\json_value.cpp : fatal error  ...

  10. PCM EQ DRC 音频处理

    PCM Pulse-code modulation的缩写,中文译名是脉冲编码调制.(I2S仅仅是PCM的一个分支,接口定义都是一样的, I2S的采样频率一般为44.1KHZ和48KHZ做,PCM采样频 ...