在带有 BatchMapping 的 Java Spring Boot 中,我想知道如何访问参数。以下是该架构的部分内容:
type Query {
user(username: String!): User
}
type User {
username: String!
posts: [Post!]!
}
type Post {
upvotes: [User!]!
upvoted(username: String!): Boolean
}
解析器看起来像这样:
@SchemaMapping
public Boolean upvoted(@Argument String username) {
//...
}
但是如果我想因为n + 1问题而提高效率,我会这样做:
@BatchMapping
public Map<Post, Boolean> upvoted(List<Post> posts) {
// ...
}
我不确定如何访问参数“用户名”来查询数据库,例如在这样的查询中:
{
user(username: "1") {
posts {
upvoted(username: "2")
}
}
}
您可能会在此 GitHub 问题下找到一些答案(和代码): https://github.com/spring-projects/spring-graphql/issues/417