gpt4 book ai didi

java - Graphql Java 嵌套查询解析器

转载 作者:太空宇宙 更新时间:2023-11-04 09:37:23 26 4
gpt4 key购买 nike

我有使用 java 解析器的需求图嵌套查询。

getAccounts(type: "01",transactionMonths: 12){
accountNumber,
openDate,
productType,
accountTransactions(annualFee: True){
amount,
date
}
}

我们如何在 graphql 中编写查询以及如何为嵌套查询编写 java 解析器。如何获取嵌套查询参数以传递到我的 jparepository。我的账户类型和交易类型如下

type Account{
accountNumber: String
openDate: String
type: String
transactionMonths: String
productType: String
accountTransactions:[AccountTransaction]
}
type AccountTransaction{
amount: String
date:String
annualFee:Boolean
}

如何使用 java 解析器使用嵌套查询来检索帐户中的 accountTransactions。

最佳答案

您是否考虑过按照此 link 中针对 BookResolver 的说明实现 GraphQLResolver? ?

如果您阅读了上面的链接,您应该能够编写如下内容:

public class AccountResolver implements GraphQLResolver<Account> {
public Collection<AccountTransaction> accountTransactions(Account account,Boolean annualFee) {
// put your business logic here that will call your jparepository
// for a given account
}
}

对于你的java DTO,你应该有这样的东西:

public class Account {
private String accountNumber;
private String openDate;
private String type;
private String transactionMonths;
private String productType;

// Don't specify a field for your list of transactions here, it should
// resolved by our AccountResolver

public Account(String accountNumber, String openDate, String type, String transactionMonths, String productType) {
this.accountNumber = accountNumber;
this.openDate = openDate;
this.type = type;
this.transactionMonths = transactionMonths;
this.productType = productType;
}

public String getAccountNumber() {
return accountNumber;
}

public String getOpenDate() {
return openDate;
}

public String getType() {
return type;
}

public String getTransactionMonths() {
return transactionMonths;
}

public String getProductType() {
return productType;
}

}

让我详细解释一下上面的解析器的代码:

  • 您为您的帐户 DTO 创建一个新的解析器;
  • 它有一个与 Account 中的 GraphQL 字段具有完全相同签名的方法,即:accountTransactions,返回 AccountTransaction 的集合。

对于Java DTO:

  • 它指定您的 GraphQL 类型的所有字段,但指定您希望解析器解析的字段。

SpringBoot GraphQL 将 Autowiring 解析器,如果客户端询问有关帐户及其交易的详细信息,它将被调用。

假设您定义了一个名为 accounts 的 GraphQL 查询来返回所有帐户,则以下 GraphQL 查询将有效:

{
accounts {
accountNumber
accountTransactions {
amount
date
annualFee
}
}
}

关于java - Graphql Java 嵌套查询解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56344245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com