查询方法
标准的 CRUD 功能仓库通常对底层数据存储进行查询。使用 Spring Data,声明这些查询成为一个四个步骤的过程。
-
声明一个扩展 Repository 或其子接口的接口,并将其类型化为它应该处理的域类和 ID 类型,如下例所示。
interface PersonRepository extends Repository<Person, Long> { … }
-
在接口上声明查询方法。
interface PersonRepository extends Repository<Person, Long> { List<Person> findByLastname(String lastname); }
-
使用JavaConfig或XML 配置设置 Spring 以创建这些接口的代理实例。
-
Java
-
XML
import org.springframework.data.….repository.config.EnableNeo4jRepositories; @EnableNeo4jRepositories class Config { … }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/data/jpa https://www.springframework.org/schema/data/jpa/spring-jpa.xsd"> <repositories base-package="com.acme.repositories"/> </beans>
本例中使用了 JPA 命名空间。如果将仓库抽象用于任何其他存储,则需要将其更改为相应存储模块的命名空间声明。换句话说,应该用例如 `mongodb` 代替 `jpa`。
请注意,JavaConfig 变体没有显式配置包,因为默认情况下使用带注释类的包。要自定义要扫描的包,请使用数据存储特定仓库的 `@EnableNeo4jRepositories` 注解的 `basePackage…` 属性之一。
-
-
注入仓库实例并使用它,如下例所示。
class SomeClient { private final PersonRepository repository; SomeClient(PersonRepository repository) { this.repository = repository; } void doSomething() { List<Person> persons = repository.findByLastname("Matthews"); } }
接下来的部分将详细解释每个步骤。