首页 > 解决方案 > 基于可选查询参数返回列表

问题描述

我必须像下面的问题一样开发一个端点

/GET Filter_Questions - Returns list of questions based on the combination of following
query parameters
  a. Input
    i. Companies - List of companies - Optional
    ii. Subtopics - List of subtopics - Optional
    iii. Likes - Questions with more votes than votes sent as input - Optional
    iv. Date - Questions asked after a given date - Optional
    v. Tags - List of tags - - Optional
  b. Output
    i. Question ID
    ii. Question Text
    iii. Companies - List of companies for which the question was asked
    iv. Likes - Number of likes of the question
    v. Answer - Answer with most likes for the given question
    vi. Tags - Tags associated with the given question

我应该如何处理这个问题,我可以做到这一点的方法是获取列表中的所有问题,然后为所有查询参数制作单独的列表,

如果用户提供 3 个参数,则将创建 3 个列表,然后我将从列表中获取重复项并返回创建的列表

但我觉得必须有一种更清洁的方法来解决这个问题?

标签: mysqlspring-boothibernatespring-data-jpaspring-rest

解决方案


您可以使用例如 Spring Data Specifications 进行可选过滤。创建一个自定义规范类,根据给定的过滤器值添加连接和谓词。

然后,Spring 数据存储库接受该规范作为参数,并使用一个实体图来获取您提到的所有关联,或者使用 DTO 投影来仅获取相关数据。


推荐阅读