GraphQL SPQR 在服务器端获取所有字段

GraphQL SPQR fetches all fields on the server side

我是 Spring Boot 的新手,我刚开始使用 graphql-spqr 作为 Spring Boot,因为它可以轻松引导 Java 项目。

然而,据我了解,GraphQL 基本上允许从数据库中获取选定的字段。根据示例,我已经看到,graphql-spqr 库中的这种类型的选择发生在客户端。有没有一种方法可以在客户端和服务器端进行选择以加快查询速度?

我查看了 GraphQL 的 EntityGraph 示例,但它们主要是为涉及 JOIN 的复杂查询实现的。但是,findAll()findById() 等简单查询不存在

我想使用 findAll(),服务器只获取客户端请求的字段。我该怎么做?

评论中所说的是正确的:GraphQL(因此 SPQR,因为它只是连接模式的工具)对 SQL、数据库、JOIN 或其他任何东西一无所知。这是一个通信协议,剩下的由你决定。 至于你的情况,你必须将子选择注入解析器并将其传递给 SQL。在最简单的情况下,它看起来像这样(在伪代码中):

public List<Book> books(@GraphQLEnvironment Set<String> fields) {
    //pass the requested field names further
    return database.query("SELECT " + fields + " FROM book");
}

如果您需要完整的上下文,您可以使用相同的注释注入 ResolutionEnvironment