查询方法

标准的 CRUD 功能仓库通常对底层数据存储进行查询。使用 Spring Data,声明这些查询成为一个四个步骤的过程。

  1. 声明一个扩展 Repository 或其子接口的接口,并将其类型化为它应该处理的域类和 ID 类型,如下例所示。

    interface PersonRepository extends Repository<Person, Long> { … }
  2. 在接口上声明查询方法。

    interface PersonRepository extends Repository<Person, Long> {
      List<Person> findByLastname(String lastname);
    }
  3. 使用JavaConfigXML 配置设置 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…` 属性之一。

  4. 注入仓库实例并使用它,如下例所示。

    class SomeClient {
    
      private final PersonRepository repository;
    
      SomeClient(PersonRepository repository) {
        this.repository = repository;
      }
    
      void doSomething() {
        List<Person> persons = repository.findByLastname("Matthews");
      }
    }

接下来的部分将详细解释每个步骤。