gpt4 book ai didi

java - 查询 Spring-Boot jpa 1.5 的可选参数

转载 作者:行者123 更新时间:2023-12-02 10:34:38 26 4
gpt4 key购买 nike

我想使用 Spring Boot 1.5 执行过滤器列表的查询,我有必需的参数(用户名)和可选的参数(电子邮件),如何在查询中为参数分配可选参数?@Query("从用户 u 中选择 u,其中 u.username LIKE :username AND u.email=:email")public Page getUsers(@Param("username") String 用户名, @Param("email") String email); http://localhost:8080/users?username=&email=test : 工作正常 http://localhost:8080/users?username= : 异常

最佳答案

使用 JPA 标准 API,如下所示:

首先,创建一个Specification对象:

private Specification<Item> createSpecification(ItemSearch itemSearch) {
return (root, query, criteriaBuilder) -> criteriaBuilder.and(
Stream.of(
itemSearch.getUsername() == null ? null : criteriaBuilder.like(root.get("username"), itemSearch.getUsername()),
itemSearch.getEmail() == null ? null : criteriaBuilder.equal(root.get("email"), itemSearch.getEmail())
).filter(Objects::nonNull).toArray(Predicate[]::new)
);
}

JpaSpecificationExecutor扩展您的存储库:

public interface ItemRepository extends CrudRepository<Item, Long>, JpaSpecificationExecutor<Item> {

}

使用规范选择所有项目:

List<Item> items = itemRepository.findAll(createSpecification(itemSearch))

关于java - 查询 Spring-Boot jpa 1.5 的可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53382803/

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