当前位置: 首页 > 知识库问答 >
问题:

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

龙才俊
2023-03-14

我想用spring Boot1.5执行过滤器列表的查询,我有必需的参数(用户名)和可选的参数(电子邮件),我如何在查询中分配可选的参数?@Query(“从User u中选择u.username LIKE:username和u.email=:email”)公共页面getUsers(@param(“username”)字符串username,@param(“email”)字符串email);http://localhost:8080/users?username=&email=test:work fine http://localhost:8080/users?username=:异常

共有1个答案

杜曜灿
2023-03-14

使用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))
 类似资料:
  • 是否有其他选择-或者使用mongoTemplate是最好的选择? 谢谢

  • 问题内容: 我正在将spring-data mongo与基于JSON的查询方法一起使用,并且不确定如何在搜索查询中允许使用可选参数。 例如-说我有以下功能 -但是我不想应用名称正则表达式匹配,或者如果将NULL值传递给方法,则不希望应用日期范围限制。 目前看来,我可能必须使用mongoTemplate构建查询。 有没有其他选择-还是使用mongoTemplate是最佳选择? 谢谢 问题答案: 为了

  • 我使用的是spring数据mongodb。 我想通过在查询中传递一些可选参数来查询数据库。 我有一个域类。 我的控制器: 这里Key和username是可选的查询参数。 如果我通过其中任何一个,它应该返回具有给定密钥或用户名的匹配文档。 我的服务方式是: 存储库: 但是通过使用上述查询,它不会返回具有给定密钥或用户名的文档。我的查询有什么问题? 这就是我提出请求的方式http://localhos

  • 问题内容: 我想在存储库层中编写一些查询方法。此方法必须忽略空参数。例如: 在这种情况下,此方法必须返回Foo: 如果gooParam不为null。如果gooParam为null,则条件更改为: 有什么解决办法吗?有人能帮我吗? 问题答案: 来不及了。不确定 Bar 和 Goo 之间的关系。检查 Example是否 可以帮助您。 它为我工作。我有一个类似的情况,实体 用户 具有属性集,并且有基于属

  • 我不明白 FastAPI 中的可选查询参数。它与默认值为 的默认查询参数有何不同? 在下面的示例中,arg1和arg2有什么区别?在该示例中,arg2是一个可选的查询参数,如上面的链接所述。

  • 有什么解决办法吗?有人能帮帮我吗?