📜  spring boot jpa in 子句 - Java (1)

📅  最后修改于: 2023-12-03 15:05:15.747000             🧑  作者: Mango

Spring Boot JPA in 子句 - Java

在 Spring Boot 应用程序中使用 JPA(Java Persistence API)时,开发人员通常需要使用 "in " 子句来避免查询中的一系列特定值。在本教程中,我们将探讨如何在 Spring Boot JPA 应用程序中使用 "in " 子句。

1. 添加依赖

首先,您需要在项目的 pom.xml 文件中添加 Spring Boot JPA 依赖项。以下是 Maven 中的依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
2. 创建实体类和存储库

接下来,您需要创建一个实体类和一个存储库类。在这里我们将使用一个 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> {
}
3. 查询使用in子句

要在 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。
4. 测试代码片段

为了测试我们的 "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 动态查询方法,开发人员可以轻松地查询数据表中的多个特定值。