Spring Boot 存储库(Repository)是 Spring Data 的一部分,用于简化数据库访问。它提供了一种声明式的方式来定义数据访问层,通常与 JPA(Java Persistence API)或 MongoDB 等数据源一起使用。
常见的 Spring Boot 存储库类型包括:
适用于需要快速构建数据访问层的应用,特别是在使用 Spring Boot 和 Spring Data 的项目中。
application-test.properties
或 application-test.yml
文件中包含正确的数据库连接配置。application-test.properties
或 application-test.yml
文件中包含正确的数据库连接配置。pom.xml
或 build.gradle
文件中包含 Spring Data JPA 和数据库驱动的依赖。pom.xml
或 build.gradle
文件中包含 Spring Data JPA 和数据库驱动的依赖。@Transactional
注解。@Transactional
注解。@Entity
和 @Id
。@Entity
和 @Id
。假设有一个简单的实体类和存储库接口:
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class MyEntity {
@Id
private Long id;
private String name;
// getters and setters
}
import org.springframework.data.jpa.repository.JpaRepository;
public interface MyRepository extends JpaRepository<MyEntity, Long> {
}
测试类:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.transaction.annotation.Transactional;
import org.junit.jupiter.api.extension.ExtendWith;
import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest
@ExtendWith(SpringExtension.class)
@Transactional
public class RepositoryTest {
@Autowired
private MyRepository myRepository;
@Test
public void testFindById() {
MyEntity entity = new MyEntity();
entity.setName("Test Entity");
myRepository.save(entity);
MyEntity foundEntity = myRepository.findById(entity.getId()).orElse(null);
assertThat(foundEntity).isNotNull();
assertThat(foundEntity.getName()).isEqualTo("Test Entity");
}
}
通过以上步骤,您应该能够解决 Spring Boot 存储库在测试期间不工作的问题。
领取专属 10元无门槛券
手把手带您无忧上云