GraphQL Java - Data Fetching

本文详细介绍了在GraphQL Java中如何获取数据,包括默认的PropertyDataFetcher的使用和自定义DataFetcher的实现。DataFetchingEnvironment对象提供了对当前查询环境的访问,包括源对象、根对象、参数和上下文信息,可用于数据获取和性能优化。同时,讨论了ExecutionStepInfo和DataFetchingFieldSelectionSet在查询执行过程中的作用,以帮助优化数据获取策略。
摘要由CSDN通过智能技术生成

一、graphql如何获取数据

每个graphql中定义的字段都有一个相关联的graphql.schema.DataFetcher。

有些字段使用自定义的data fetcher代码,用于访问数据库并从数据库中获取字段信息。而大多数字段仅使用字段名称,在内存中的Map对象或或普通的Java对象(POJO)中获取数据。

在其他的GraphQL 实现当中,Data Fetcher会有时称为resolvers。

假设一个类型定义如下:

    type Query {
        products(match : String) : [Product]   # a list of products
    }

    type Product {
        id : ID
        name : String
        description : String
        cost : Float
        tax : Float
        launchDate(dateFormat : String = "dd, MMM, yyyy') : String
    }

Query.products字段有一个Data Fetcher,Product类型中的每个字段也一样。

Query.products字段的Data Fetcher可能非常复杂,包含从数据库中读取Product对象的操作。它使用一个可选的match参数,进而可以对products结果中的对象进行过滤。

其示例如下:

        DataFetcher productsDataFetcher = new DataFetcher<List<ProductDTO>>() {
            @Override
            public List<ProductDTO> get(DataFetchingEnvironment environment) {
                DatabaseSecurityCtx ctx = environment.getContext();

                List<ProductDTO> products;
                String match = environment.getArgument("match");
                if (match != null) {
                    produc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值