如何通过 Graphql 模式生成 java 实体

Posted

技术标签:

【中文标题】如何通过 Graphql 模式生成 java 实体【英文标题】:How to generate java entity by Graphql schema 【发布时间】:2020-05-28 16:32:31 【问题描述】:

我是graphql java客户端开发的新手。最近遇到一个问题,如何通过graphql模式定义生成java实体。由于在我这边,架构总是在另一侧发生变化,所以我想要一种自动生成java实体类的方法,而不是手动读取架构然后更改代码。如果有这种要求的做法?谢谢。

【问题讨论】:

【参考方案1】:

您可以查看以下maven plugin。它将帮助您从 .graphqls 文件生成 Java 类。

假设您只有一个定义 GraphQL 模型的文件,名为 myGraphqls,我将使用此插件如下:

<build>
    <plugins>
        <plugin>
            <groupId>io.github.kobylynskyi</groupId>
            <artifactId>graphql-codegen-maven-plugin</artifactId>
            <version>1.2.3</version>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <graphqlSchemaPaths>
                            <graphqlSchemaPath>$project.basedir/src/main/resources/graphql/myGraphqls.graphqls</graphqlSchemaPath>
                        </graphqlSchemaPaths>
                        <outputDir>$project.build.directory/generated-sources/graphql</outputDir>
                        <packageName>com.graphql.model</packageName>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

运行 maven 后,您将能够在 generated-sources 文件夹中找到名为 graphql 的文件夹,其中包含在包 com 下生成的类。 graphql.model.

【讨论】:

嗨,谢谢你的信息。我试过这个插件,但它会生成一堆 spring boot 依赖项,这会与我的原始 spring 框架冲突。这能解决吗? 不错的插件,但是如果你只想生成 POJO,依赖太多了。

以上是关于如何通过 Graphql 模式生成 java 实体的主要内容,如果未能解决你的问题,请参考以下文章

使用 Hasura graphql 模式时如何自定义 graphql-code-generator 生成的字段的类型

处理 GraphQL 模式中的动态元素

GraphQL 模式生成

动态生成 GraphQL 模式支持

如何通过 GraphQL 的“slug”查询我的 API 以获取单个实体?

GraphQL Java 类生成器 [关闭]