Spring通过springframework.data的@PageableDefault注解分页
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring通过springframework.data的@PageableDefault注解分页相关的知识,希望对你有一定的参考价值。
参考技术A在使用 Spring+mybatis 框架时,看到很多人用的pageHelper插件进行分页,如果不用的话,使用 pring.data 下的 @PageableDefault 也是可以完成分页功能的。
@PageableDefault 接口
Pageable 定义了很多方法,但其核心的信息只有两个:一是分页的信息(page、size),二是排序的信息。使用 @PageableDefault 的时候可以自定义分页信息 @PageableDefault(value = 15, sort = "update_time" , direction = Sort.Direction.DESC) Pageable pageable) 。
controller层:
sql语句:
当不对 @PageableDefault 设置属性时,采用的是默认属性(0,10,不排序),这个时候就需要将分页信息写进sql语句。
controller:
sql语句:
Spring REST 数据
【中文标题】Spring REST 数据【英文标题】:Spring REST Data 【发布时间】:2015-08-06 08:09:14 【问题描述】:我正在尝试使用文档中的演示应用程序公开 :
package hello;
import java.util.List;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends MongoRepository<Person, String>
List<Person> findByLastName(@Param("name") String name);
通过使用示例中找到的依赖项,我无法找到 RepositoryRestResource:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
</dependencies>
按照 Netbeans 的建议,我添加了以下依赖项:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-rest-core</artifactId>
<type>jar</type>
<version>2.3.0.RELEASE</version>
</dependency>
现在代码可以编译,但是执行失败:
Caused by: java.lang.NoClassDefFoundError: org/springframework/data/rest/core/invoke/RepositoryInvokerFactory
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2570)
at java.lang.Class.getDeclaredMethods(Class.java:1855)
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:571)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:488)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:474)
at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:534)
知道怎么解决吗?
【问题讨论】:
【参考方案1】:您应该能够删除额外的依赖项,因为 Spring Boot 的 REST 启动器已经在正确版本中引入了所有依赖项。
Spring Boot 1.2.3 在其第二个服务版本中引用了 Spring Data train Evans。这归结为 Spring Data REST 2.2.2。如果您想升级到更新的版本系列(例如 Fowler),请将 spring-data-releasetrain.version
属性的值更改为 Fowler-GA
。然后将 Spring Data REST 升级到 2.3.0,并确保您在匹配的版本中获得所有必需的依赖项。
【讨论】:
谢谢,这似乎是 Netbeans 环境的问题。通过使用 maven shell 编译它可以工作。以上是关于Spring通过springframework.data的@PageableDefault注解分页的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 Spring Data 和绑定参数的 Postgres JSONB 查询失败并出现 InvalidDataAccessApiUsageException
如何通过依赖项禁用通过 spring.factories 注册的 spring 工厂并保留此 spring-boot 依赖项?