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 依赖项?

Spring从容器中获取bean对象可以分别通过啥接口

Spring从容器中获取bean对象可以分别通过啥接口?

java 通过注释Spring Spring MVC messageSource配置

spring boot框架学习学前掌握之重要注解-通过java的配置方式进行配置spring