mvn 引用GraphQL

<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java</artifactId>
<version>11.0</version>
</dependency>

1. 创建数据类

package com.demo.graph;

public class CPU {
private String name;
private String cache; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCache() {
return cache;
}
public void setCache(String cache) {
this.cache = cache;
}
}
package com.demo.graph;

public class Memory {
private String name;
private String size;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
} }
package com.demo.graph;

import java.util.List;

public class Computer {
private String name;
private CPU cpu;
private List<Memory> memoryList; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public CPU getCpu() {
return cpu;
}
public void setCpu(CPU cpu) {
this.cpu = cpu;
}
public List<Memory> getMemoryList() {
return memoryList;
}
public void setMemoryList(List<Memory> memoryList) {
this.memoryList = memoryList;
}
}

2. 创建测试类

package com.demo.graph;

import java.util.ArrayList;
import java.util.List;
import java.util.Map; import graphql.GraphQL;
import graphql.schema.GraphQLList;
import graphql.schema.GraphQLObjectType;
import graphql.schema.GraphQLSchema;
import static graphql.Scalars.GraphQLString;
import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
import static graphql.schema.GraphQLObjectType.newObject; public class GraphQLDemoTest { public static void main(String[] args) {
CPU cpu = new CPU();
cpu.setName("I7");
cpu.setCache("19M"); Memory m1 = new Memory();
m1.setName("海盗船");
m1.setSize("8G"); Memory m2 = new Memory();
m2.setName("海盗船");
m2.setSize("8G"); List<Memory> memoryList = new ArrayList<Memory>();
memoryList.add(m1);
memoryList.add(m2); Computer computer = new Computer();
computer.setName("组装机");
computer.setCpu(cpu);
computer.setMemoryList(memoryList); // 定义GraphQL类型
GraphQLObjectType cpuType = newObject().name("cpuType")
.field(newFieldDefinition().name("name").type(GraphQLString))
.field(newFieldDefinition().name("cache").type(GraphQLString)).build(); GraphQLObjectType memoryType = newObject().name("memoryType")
.field(newFieldDefinition().name("name").type(GraphQLString))
.field(newFieldDefinition().name("size").type(GraphQLString)).build(); GraphQLObjectType computerType = newObject().name("computerType")
.field(newFieldDefinition().name("name").type(GraphQLString))
.field(newFieldDefinition().name("cpu").type(cpuType))
.field(newFieldDefinition().name("memoryList").type(new GraphQLList(memoryType))).build(); // 关联返回类型与返回数据
GraphQLObjectType queryType = newObject().name("computerQuery")
.field(newFieldDefinition().type(computerType).name("computer").dataFetcher(evn -> {
return computer;
})).build(); GraphQLSchema schema = GraphQLSchema.newSchema().query(queryType).build(); GraphQL graphQL = GraphQL.newGraphQL(schema).build(); Map<String, Object> result = graphQL.execute("{computer{name,cpu{name,cache},memoryList{name,size}}}")
.getData(); // 打印返回结果
System.out.println(result); } }

GraphQL Java Demo代码的更多相关文章

  1. pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页

    java 后台代码实现分页 demo 实力 自己写的 标签分页 package com.cszoc.sockstore.util; import java.util.HashMap;import ja ...

  2. 《算法导论》第二章demo代码实现(Java版)

    <算法导论>第二章demo代码实现(Java版) 前言 表示晚上心里有些不宁静,所以就写一篇博客,来缓缓.囧 拜读<算法导论>这样的神作,当然要做一些练习啦.除了练习题与思考题 ...

  3. 腾讯云>>云通信>>TLS后台API在mac上JAVA DEMO搭建

    1.相关文档地址 2.相关demo代码 代码部分作了修改,使用了commons-io中的IOUtils.toString简化了io操作 public class Demo { public stati ...

  4. java集合框架之java HashMap代码解析

     java集合框架之java HashMap代码解析 文章Java集合框架综述后,具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 源自http://www.codeceo.com/arti ...

  5. 中间件 activeMQ Jms Java Demo

    一.什么是ActiveMQ 百度解释: ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provi ...

  6. Rancher之Pipeline JAVA demo

    Rancher Pipeline Pipeline,简单来说,就是一套运行于Rancher上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程. Ranc ...

  7. Android 后台发送邮件 (收集应用异常信息+Demo代码)

    上一次说了如何收集我们已经发布的应用程序的错误信息,方便我们调试完善程序.上次说的收集方法主要是把收集的信息通过Http的post请求把相关的异常信息变成请求参数发送到服务器.这个对做过web开发的人 ...

  8. 调试Android Framework的Java部分代码

    DebugAndroidFramework 说明:调试Android Framework的Java部分代码,以调试源码android-28为例,需要一个API 28的模拟器配合使用. 一.下载源码 下 ...

  9. 经典KMP算法C++与Java实现代码

    前言: KMP算法是一种字符串匹配算法,由Knuth,Morris和Pratt同时发现(简称KMP算法).KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的.比 ...

随机推荐

  1. VUE 简单属性操作

    在main.js内配置路由及相应模板 import Vue from 'vue' import App from './App' // 引入router路由 import Router from 'v ...

  2. VC++6.0

    for 循环的小括号中 不可以定义变量 我也是醉了

  3. 使用原生 JS 复制文本兼容移动端 iOS & android

    注意事项 使用 JS 实现复制功能并不是很难,但是有几个需要注意的地方. 首先文本只有选中才可以复制,所以简单的做法就是创建一个隐藏的 input,然后绑定需要复制的文本. 另外如果将 input 设 ...

  4. Riemann流形上的梯度,散度与Laplace算子

    今天(准确地说是昨天)被学物理的同学问到Stokes定理,想起来我还有一个知道但没有细看的东西,下面整理成提示完整的习题记录一下. 这部分内容将会加进几何学观止,敬请期待.目前正在纂写代数几何簇的部分 ...

  5. [转帖]御界预警:3700余台SQL服务器被入侵挖矿 或导致严重信息泄露事件

    御界预警:3700余台SQL服务器被入侵挖矿 或导致严重信息泄露事件 https://zhuanlan.kanxue.com/article-8292.htm sqlserver的弱密码破解和提权攻击 ...

  6. Django(六)Session、CSRF、中间件

    大纲 二.session 1.session与cookie对比 2.session基本原理及流程 3.session服务器操作(获取值.设置值.清空值) 4.session通用配置(在配置文件中) 5 ...

  7. element vue 表格编辑

    https://xuliangzhan.github.io/vue-element-extends/#/editable/click1

  8. PHP——??空合并运算符和?:三元运算符

    前言 在上一篇随笔,用三元运算符简单写的一个东西,引发了对他的兴趣,所以打算研究下. PHP7的新特性: https://php.net/manual/zh/migration70.new-featu ...

  9. 《java核心技术36讲》学习笔记-------杨晓峰(极客时间)

    非常荣幸作为晓峰哥的同事,之前就看过这篇文章,重写读一遍,再学习学习. 一.开篇词 初级.中级:java和计算机科学基础.开源框架的使用:高级.专家:java io/nio.并发.虚拟机.底层源码.分 ...

  10. Codeforces Round #549 (Div. 1)

    今天试图用typora写题解 真开心 参考 你会发现有很多都是参考的..zblzbl Codeforces Round #549 (Div. 1) 最近脑子不行啦 需要cf来缓解一下 A. The B ...