SpringData分页功能
在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分页功能的更多相关文章
- 简单封装分页功能pageView.js
分页是一个很简单,通用的功能.作为一个有经验的前端开发人员,有义务把代码中类似这样公共的基础性的东西抽象出来,一来是改善代码的整体质量,更重要的是为了将来做类似的功能或者类似的项目,能减少不必要的重复 ...
- php对文本文件进行分页功能简单实现
php对文本文件进行分页功能简单实现 <!DOCTYPE> <html> <head> <meta http-equiv="Content-type ...
- Asp.net MVC3表格共用分页功能
在建立的mvc3项目中,在Razor(CSHTML)视图引擎下,数据会在表格中自动的生成,但分页没有好的控件实现,这里我们开发了设计了一个分页的模板,适合于没有数据提交和有数据提交的分页的分页. 第一 ...
- WinForm DataGridView分页功能
WinForm 里面的DataGridView不像WebForm里面的GridView那样有自带的分页功能,需要自己写代码来实现分页,效果如下图: 分页控件 .CS: 1 using System; ...
- Net 分页功能的实现
首先写一个接口 1 2 3 4 5 6 public interface IPagedList { int CurrentPageIndex { get; set; } ...
- 自己封装的JS分页功能[用于搭配后台使用]
* 2016.7.03 修复bug,优化代码逻辑 * 2016.5.25 修复如果找不到目标对象的错误抛出. * 2016.5.11 修复当实际页数(pageNumber)小于生成的页码间隔数时的bu ...
- 一行代码调用实现带字段选取+条件判断+排序+分页功能的增强ORM框架
问题:3行代码 PDF.NET是一个开源的数据开发框架,它的特点是简单.轻量.快速,易上手,而且是一个注释完善的国产开发框架,受到不少朋友的欢迎,也在我们公司的项目中多次使用.但是,PDF.NET比起 ...
- jPList – 实现灵活排序和分页功能的 jQuery 插件
jPList 是一个灵活的 jQuery 插件,可以用于任何 HTML 结构的排序,分页和筛选.它支持的数据源包括:PHP + MySQL,ASP.NET + SQL Server,PHP + SQL ...
- 【jQuery 分页】jQuery分页功能的实现
自写的jQuery实现分页功能的分页组件: 功能效果如下: 分页组件就是上图中的三部分, 分别放在表格上部 和下部 . 其中, 1>>>页面的代码如下: product.jsp 其 ...
随机推荐
- easyui 进阶之表单校验、自定义校验
前言 easyui是一种基于jQuery的用户界面插件集合,它为创建现代化,互动,JavaScript应用程序,提供必要的功能,完美支持HTML5网页的完整框架,节省网页开发的时间和规模.非常的简单易 ...
- Innobackupex(xtrabackup)物理备份
1. Percona XtraBackup介绍 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个完全开源的用于 MySQL 数据库物理热备的备份工具,在备份过程中不 ...
- python购物车作业
# -*- coding:utf8 -*- # Author:Wang Yao goods = [{"name": "电脑", "price" ...
- 谈谈jQuery中的数据类型检测
这次是分享jQuery代码中的一些简写技巧,分析jQuery是如何优化代码的,如何用最少的代码来实现jQuery. 在我们工作中也常常会遇到一些数据类型检测,一些方法调用的形式 1 var arr = ...
- 4-13 object类,继承和派生( super) ,钻石继承方法
1,object 类 object class A: ''' 这是一个类 ''' pass a = A() print(A.__dict__) # 双下方法 魔术方法 创建一个空对象 调用init方法 ...
- 20165237 2017-2018-2 《Java程序设计》第十周考试补做及编程题
20165237 2017-2018-2 <Java程序设计>第十周考试补做及编程题 知识点 1.链表是由若干个称作节点的对象组成的一种数据结构,每个节点含有一个数据和下一个节点的引用 . ...
- 20165234 《Java程序设计》第三周学习总结
第三周学习总结 教材学习内容总结 第四章 编程语言的几个发展阶段: 面向机器语言 面向过程语言 面向对象语言 类 1. 类声明: class People { ... } class 动物 { ... ...
- springboot配置server相关配置&整合模板引擎Freemarker、thymeleaf&thymeleaf基本用法&thymeleaf 获取项目路径 contextPath 与取session中信息
1.Springboot配置server相关配置(包括默认tomcat的相关配置) 下面的配置也都是模板,需要的时候在application.properties配置即可 ############## ...
- WPF C# int.TryParse的用法
; if (!int.TryParse(item.Tag.ToString(), out comld)) { continue; } 没转换成功就continue 开始写成 if(GetNumber( ...
- CentOS6源码安装VSFTPD3
还是碰到老问题:安全扫描,由于CentOS6上VSFTPD最高支持到V2.2.2,目前已经是官方支持的最新版本(发布了几年...) 但有安全漏洞,又没法通过限制访问进行控制,只能想办法升级到最新版本了 ...