📅  最后修改于: 2023-12-03 15:05:15.747000             🧑  作者: Mango
在 Spring Boot 应用程序中使用 JPA(Java Persistence API)时,开发人员通常需要使用 "in " 子句来避免查询中的一系列特定值。在本教程中,我们将探讨如何在 Spring Boot JPA 应用程序中使用 "in " 子句。
首先,您需要在项目的 pom.xml 文件中添加 Spring Boot JPA 依赖项。以下是 Maven 中的依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
接下来,您需要创建一个实体类和一个存储库类。在这里我们将使用一个 User
实体类和一个 UserRepository
存储库类,如下所示:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// getters and setters
}
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
要在 Spring Boot JPA 应用程序中使用 "in " 子句,您可以使用 @Query
注解或使用 Spring Data JPA 动态查询方法。以下是使用 @Query
注释的示例:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT u FROM User u WHERE u.name IN (:names)")
List<User> findUsersByNames(@Param("names") List<String> names);
}
> 注意:
>
> 您需要在 `User` 实体类中使用正确的字段名和在查询中使用相同的名称。
> 您还需要在查询中使用正确的实体类名称,即 `User` 而不是 `user` 或 `users`。
> 您需要使用 `:` 符号,后跟参数名称,将参数绑定到查询中。
> 您需要使用 `@Param` 注解为参数指定正确的名称。
以下是使用 Spring Data JPA 动态查询方法的示例:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findAllByNameIn(List<String> names);
}
> 注意:
>
> 动态查询方法名称应使用正确的大写字母和实体类字段名称,但不用指定查询关键字,如 SELECT、WHERE 或 IN。
为了测试我们的 "in " 子句查询,我们将创建一个测试类并使用 UserRepository
存储库类来查找用户。以下是测试代码片段:
@SpringBootTest
class DemoApplicationTests {
@Autowired
private UserRepository userRepository;
@Test
void testFindUsersByNames() {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<User> users = userRepository.findUsersByNames(names);
assertThat(users).hasSize(3);
}
@Test
void testFindAllByNameIn() {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<User> users = userRepository.findAllByNameIn(names);
assertThat(users).hasSize(3);
}
}
在这个教程中,我们展示了如何在 Spring Boot JPA 应用程序中使用 "in " 子句。通过使用 @Query
注解或 Spring Data JPA 动态查询方法,开发人员可以轻松地查询数据表中的多个特定值。