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

QueryDSL:从实体构建查询

高砚
2023-03-14

我刚刚开始将QueryDSL集成到一个Spring Boot项目中,我正在寻找一种从现有实体bean构建查询的方法。使用@ModelAttribute,只要参数与bean对齐,通过控制器的GET请求传入实体是非常好和容易的:

public Page<Company> getLogins(@ModelAttribute Company company, Pageable pageable, @RequestParam(value = "page", required = false) String pageNumber){
    return companyService.findbyParameters(company,pageNumber);

}

在service类中,我可以使用BooleanBuilder构建查询:

    public Page<Company> findbyParameters(Company companySearch,String pageNumber){
        QCompany company = QCompany.company;
        BooleanBuilder builder = new BooleanBuilder();
        if (companySearch.getEmail() != null && !companySearch.getEmail().equals("")){
            builder.and(company.email.eq(companySearch.getEmail()));
        }
        if (companySearch.getCompanyName() != null && !companySearch.getCompanyName().equals("")){
            builder.and(company.companyName.eq(companySearch.getCompanyName()));
        }
       //add other clauses...
       return loginRepository.findAll(builder.getValue(),pageableService.getPageRequest(pageNumber));
    }

那么有没有一种好的、整洁的方法来处理这种情况,而不会用样板文件堵塞我的服务课程呢?

共有1个答案

吴英武
2023-03-14

您可以使用Spring Data的QueryDSL集成。基本上,在存储库接口中扩展QueryDSLPredicateExecutor,它添加了一个FindAll方法,该方法获取QueryDSL谓词,并根据该谓词筛选所有结果。您可以在这里看到更多细节。

 类似资料:
  • 我想根据ModelB中的用户从modelA中获取数据。但这并不是强制要求我在ModelB中为每一个记录都有记录。所以当我使用下面的代码来获取数据时,它返回0条记录。 当我调试时,我发现QueryDsl将交叉联接。有人能告诉我如何修复这个问题吗?querydsl有没有办法添加左联接而不是交叉联接?下面是我的两个模型。

  • Hibernate5.2.10 查询DSL(jpa,apt)4.1.4 Spring Boot 1.5.6 Spring Data JPA(因此,使用存储库) 存储库扩展 选择以下meetupCampaign.id=x *meetupCampaign.ApprovalStatus=y的关联会议: *meetupCampaign.id=x *meetupCampaign.ApprovalStatus

  • 我正在尝试在我的Spring数据服务中使用查询DSL来实现类似于SQL的查询 成员可以是项目或黑客马拉松的成员。项目是黑客马拉松的一部分。我试图找到哈查顿和子项目的所有成员。 因为谓词产生了交叉连接,所以QueryDslPredicateExecutor接口对我不起作用: 我尝试过使用JPAQuery来手动管理连接策略,但是也遇到了同样的问题: Hibernate:选择memberenti0_.i

  • 我在当前项目中使用QueryDSL,在一个实例中,由于jpql的限制,我需要使用本机查询而不是jpa查询。 值得庆幸的是,通过从切换到可以很容易地从一个实体切换到另一个实体并保留api抽象层,但是在我这样做之后,实体不再映射为结果类型。 示例: 使用: 将生成适当的实体作为结果类型: 但是 有没有办法强制返回实体而不手动映射它们? 使用query_dsl_version=4.2.1的Im TLDR

  • 在开始一个新项目之前,我正在寻求一些指导。 我的目标是在应用程序中生成一个表单/问题,该表单/问题器根据问题的组及其类别提取问题数据。其中,每个类别包含许多组,每个组包含许多问题。 为了支持 UI 和嵌套回收器视图,目的是为视图模型提供包含嵌套列表的单个对象。即具有类别列表的对象,其中包含组列表,包含问题列表。 在建立空间、实体和DAO及其关系方面,我的理解是,实现这一目标的最佳方法是: < li

  • 我正在尝试使用Querydsl(4.1.4)查询JPA,如本文http://www.Querydsl.com/static/Querydsl/latest/reference/html/ch02.html#jpa_integration所述。我使用Hibernate(5.2.12.final)作为JPA后端。我使用和处理器从JPA注释类生成Querydsl查询类型。 这将打印: 原始JpaUpda