我是Spring Boot的新手,我刚刚开始使用graphql-spqr for Spring Boot,因为它允许轻松地引导Java项目。
然而,据我所知,GraphQL基本上允许从数据库中提取选定的字段。根据示例,我已经看到,graphql-spqr库中的这种类型的选择发生在客户端。有没有一种方法可以同时在客户端和服务器端进行选择,以加快查询速度?
我已经研究了GraphQL的EntityGraph示例,但它们主要是为涉及连接的复杂quieres实现的。但是,对于findAll()、findById()等简单查询来说,并不存在任何东西。
我想在服务器端使用findAll(),只获取客户端请求的字段。我该怎么做呢?
发布于 2021-04-19 16:39:37
评论中所说的是正确的: GraphQL (因此SPQR,因为它仅仅是一个连接模式的工具)对SQL、数据库、连接或其他任何东西一无所知。这是一个通信协议,剩下的就看你的了。至于您的情况,您必须将子选择注入到解析器中,并将其传递给SQL。在最简单的情况下,它可能看起来像这样(在伪代码中):
public List<Book> books(@GraphQLEnvironment Set<String> fields) {
//pass the requested field names further
return database.query("SELECT " + fields + " FROM book");
}如果需要完整的上下文,您可以使用相同的注释注入ResolutionEnvironment。
https://stackoverflow.com/questions/67156041
复制相似问题