查询方法
标准 CRUD 功能存储库通常对底层数据存储进行查询。 使用 Spring Data,声明这些查询将成为一个四步过程:
-
声明一个扩展 Repository 的接口或其子接口之一,并将其键入到它应该处理的域类和 ID 类型,如以下示例所示:
interface PersonRepository extends Repository<Person, Long> { … }
-
在接口上声明查询方法。
interface PersonRepository extends Repository<Person, Long> { List<Person> findByLastname(String lastname); }
-
设置 Spring 以使用 JavaConfig 或 XML 配置为这些接口创建代理实例。
-
Java
-
XML
import org.springframework.data.….repository.config.EnableJpaRepositories; @EnableJpaRepositories 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 命名空间。 如果你对任何其他 store 使用仓库抽象,你需要将其更改为 store 模块的相应命名空间声明。 换句话说,您应该交换以支持例如 .
jpa
mongodb
请注意,JavaConfig 变体不会显式配置包,因为默认情况下使用带 Comments 的类的包。 要自定义要扫描的软件包,请使用数据存储特定存储库的 -annotation 的属性之一。
basePackage…
@EnableJpaRepositories
-
-
注入存储库实例并使用它,如以下示例所示:
class SomeClient { private final PersonRepository repository; SomeClient(PersonRepository repository) { this.repository = repository; } void doSomething() { List<Person> persons = repository.findByLastname("Matthews"); } }
以下各节详细介绍了每个步骤: