簡體   English   中英

使用spring-data-rest返回所有結果

[英]returning all result using spring-data-rest

我正在從https://spring.io/guides/gs/accessing-data-rest/關注spring數據休息,我只使用

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency> 

我想知道如何返回所有記錄( without pagination ),但不使用spring-boot-starter-web,我想使代碼盡可能小。

我嘗試了以下操作,但無法正常工作

@RepositoryRestResource(collectionResourceRel = "people" , path = "people")
public interface PersonRepository  extends PagingAndSortingRepository<Person, Long> {
    List<Person> findAllByLastName(@Param("name") String name);
    default List<Person> findAll(){
        Pageable pageable = null;
        return (List<Person>) this.findAll(pageable);
    };
}

我的意思是,如果我擁有完整的MVC,我可以做到,但是我希望將代碼保持在最低限度。

Spring Data REST本身就是Spring MVC應用程序,其設計方式應使其可以與現有的Spring MVC應用程序輕松集成。 現有的(或將來的)服務層可以與Spring Data REST一起運行,而僅需少量的額外工作即可。


如果您使用的是當前版本的Spring Boot,則無需使用@RepositoryRestResource標記您的存儲庫; 如果spring在路徑中找到了spring-data-rest依賴項,spring也將自動配置Spring Data Rest,下面您將找到具有最低配置的步驟:

在pom.xml中:

        <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-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>

定義您的實體+存儲庫:

Order.java

@Entity(name = "SampleOrder")
@Data
public class Order {

    @Id @GeneratedValue//
    private Long id;
    private String name;
}

OrderRepository.java

public interface OrderRepository extends CrudRepository<Order, Long> {

}

Application.java

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

測試您的API:

curl http://localhost:8080
< HTTP/1.1 200 OK
< Content-Type: application/hal+json
{ "_links" : {
    "orders" : {
      "href" : "http://localhost:8080/orders"
    }
  }
}

如@ abdelghani-roussi所示,您可以使用CrudRepository代替PagingAndSortingRepository ,例如:

public interface PersonRepository extends CrudRepository<Person, Long> {
  List<Person> findAllByLastName(@Param("name") String name);
  // don't need to define findAll(), it's defined by CrudRepository
}

然后默認的findAll()方法將返回未分頁的List<Person>

注:正如我在我的評論中提到,通過包括對依賴spring-boot-starter-data-rest拉動了網絡的依賴,所以你不能避免。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM