[英]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.