在Spring Boot应用程序中使用Spring Data JDBC

问题描述 投票:0回答:2

我正在寻找有关如何在Spring Boot应用程序中配置Spring Data JDBC的信息(Gradle示例将是理想的)。

我读过the docs,我知道我需要为每个域类(或域类的“聚合”)定义一个Repository实现,例如:

interface UserRepository extends CrudRepository<User, Long> {

  // custom query methods
  long countByLastname(String lastname);
}

但是,还不完全清楚需要添加哪些依赖项,如何将存储库bean注入其他bean,如何指定Spring可以在哪里找到存储库bean等等。

我特别想看看如何定义一个管理多个表/域类的存储库。例如,一个管理Order及其OrderItems集合的持久性的存储库。 the docs中的示例仅显示如何将单个域类映射到存储库。

java spring spring-boot spring-data spring-data-jdbc
2个回答
2
投票

由于您使用Spring Boot开发应用程序,因此可以使用入门Spring模块。在特定情况下,依赖性将是

implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'

如果您配置了Gradle Spring插件,则会自动拾取模块版本

id 'org.springframework.boot' version '2.1.2.RELEASE' // Your version

当您创建自定义Repository接口时,您只需要使用类注释@Repository对它们进行注释。 Spring-autoconfigured扫描机制将自动拾取它们(记得将它们放在子包中,将@SpringBootApplication注释类作为root)。

然后,您可以使用希望构造函数注入来@Autowire您的服务器中的存储库,或任何您想要的。

@Autowired
MyClass(final MyRepository repository) { ... }

请注意,如果您有一个构造函数,则无需指定@Autowired批注。

顺便说一下,Data JDBC是一个非常新的项目。有一些限制,但我想你已经在Data JDBC文档中找到了它们。


1
投票

需要添加哪些依赖项

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>

如何将存储库bean注入其他bean

在您的控制器或服务或任何其他bean中,您可以自动装配此存储库: -

private final UserRepository userRepository;

@Autowired
public UserController(UserRepository userRepository) {
    this.userRepository = userRepository;
}

如何指定Spring可以找到存储库bean的位置

Spring Boot将自动扫描包含@SpringBootApplication定义的主类的包(和子包)。

另外,使用@Repository注释您的界面: -

@Repository
interface UserRepository extends CrudRepository<User, Long> {
© www.soinside.com 2019 - 2024. All rights reserved.