繁体   English   中英

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

[英]Optional param with query Spring-Boot jpa 1.5

我想使用Spring Boot 1.5执行过滤器列表的查询,我需要参数(用户名)和可选参数(电子邮件),如何在查询中为参数分配可选参数? @Query(“从用户中选择u,其中u.username就像:username AND u.email =:email”)public Page getUsers(@Param(“ username”)字符串用户名,@Param(“ 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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM