4.2. 查询方法

  1. Declare an interface extending Repository or one of its subinterfaces and type it to the domain class and ID type that it will handle. 标准CRUD功能库通常对底层数据存储有查询。 使用Spring Data,声明这些查询包含以下四步:

1.声明扩展Repository或其子接口之一的接口,并注入实体类和它的和ID类型。

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

    interface PersonRepository extends Repository<Person, Long> {
      List<Person> findByLastname(String lastname);
    }
    
  2. 使用Spring来为这些接口创建代理实例。也可以通过JavaConfig:

    import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
    
    @EnableJpaRepositories
    class Config {}
    

    或者通过XML配置:

    <?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
         http://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/data/jpa
         http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
    
       <jpa:repositories base-package="com.acme.repositories"/>
    
    </beans>
    

    在本示例中使用JPA命名空间。 如果你正在使用其他抽象repository,你需要改变相应的命 名空间来替换jpa的声明支持你得存储模块,例如mongodb. 另外,请注意,JavaConfig变量不会明确配置包,因为默认情况下使用注解类的包。 要定制要扫描的包,使用数据存储特定存储库的basePackage ...属性@Enable ...-annotation。

  3. 获取repository实例注入并使用它。

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

后续的章节将会详细解释这些步骤

results matching ""

    No results matching ""