gpt4 book ai didi

java - 如何在 Spring Data Jpa 中过滤作为 RequestParams 传递的多个参数?

转载 作者:行者123 更新时间:2023-12-03 08:15:00 27 4
gpt4 key购买 nike

假设我有一个 Employee 类,其中包含多个字段,例如 nameagesalary职称加入日期性别等等。现在,我如何应用具有许多此类参数的过滤?在这种情况下可能有多种组合。 (例如,如果我想要 6 个过滤器,那么总共可以有 6 个!= 720 种可能的组合!!!)

仅适用于 2、3 个参数,例如 agesalaryname;那么我可以写多个 if 情况,例如:

if(age!=null && name==null && salary==null)
{
findByAge
}
if(age==null && name!=null && salary==null)
{
findByName
}
if(age!=null && name!=null && salary==null)
{
findByAgeAndName
}

等等。像这些在 Spring Data JPA 的帮助下。但是如何处理更多参数,因为组合会随着每个 RequestParams 的增加而增加?

最佳答案

您正在寻找的是多条件查询。您可以使用非常简单的 Example API

您将使用构建器模式创建一个实体。 Lombok 可以帮助您完成这一步:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "employee")
public class Employee {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "age")
private int age;
// your other fields

}

然后你可以调用你的方法:

Employee employee = Employee
.builder()
.name(nameValue)
.age(ageValue)
.build();

return repository.findAll(Example.of(employee));

您将找到完整的示例 here .

关于java - 如何在 Spring Data Jpa 中过滤作为 RequestParams 传递的多个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69687817/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com