GraphQL Java Demo代码
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代码的更多相关文章
- pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页
java 后台代码实现分页 demo 实力 自己写的 标签分页 package com.cszoc.sockstore.util; import java.util.HashMap;import ja ...
- 《算法导论》第二章demo代码实现(Java版)
<算法导论>第二章demo代码实现(Java版) 前言 表示晚上心里有些不宁静,所以就写一篇博客,来缓缓.囧 拜读<算法导论>这样的神作,当然要做一些练习啦.除了练习题与思考题 ...
- 腾讯云>>云通信>>TLS后台API在mac上JAVA DEMO搭建
1.相关文档地址 2.相关demo代码 代码部分作了修改,使用了commons-io中的IOUtils.toString简化了io操作 public class Demo { public stati ...
- java集合框架之java HashMap代码解析
java集合框架之java HashMap代码解析 文章Java集合框架综述后,具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 源自http://www.codeceo.com/arti ...
- 中间件 activeMQ Jms Java Demo
一.什么是ActiveMQ 百度解释: ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provi ...
- Rancher之Pipeline JAVA demo
Rancher Pipeline Pipeline,简单来说,就是一套运行于Rancher上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程. Ranc ...
- Android 后台发送邮件 (收集应用异常信息+Demo代码)
上一次说了如何收集我们已经发布的应用程序的错误信息,方便我们调试完善程序.上次说的收集方法主要是把收集的信息通过Http的post请求把相关的异常信息变成请求参数发送到服务器.这个对做过web开发的人 ...
- 调试Android Framework的Java部分代码
DebugAndroidFramework 说明:调试Android Framework的Java部分代码,以调试源码android-28为例,需要一个API 28的模拟器配合使用. 一.下载源码 下 ...
- 经典KMP算法C++与Java实现代码
前言: KMP算法是一种字符串匹配算法,由Knuth,Morris和Pratt同时发现(简称KMP算法).KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的.比 ...
随机推荐
- 013_针对单个pid的cpu/内存/io的资源占用统计
#!/usr/bin/env python import sys import os import subprocess from decimal import Decimal from decima ...
- Troubleshooting 'library cache: mutex X' Waits. (Doc ID 1357946.1)
In this Document Purpose Troubleshooting Steps What is a 'library cache: mutex X' wait? What ...
- python 提取pdf文字
安装pdfminer 库 windows 下安装pdfminer3k pip install pdfminer3k Liunx 下安装pdfminer pip install pdfminer 代码 ...
- 网页分享到facebook
一.在网页头部加入如下代码: <meta property="og:url" class="fb_url" content="分享url&quo ...
- Neutron路由篇:L3 agent+Namespace
Neutron 的路由服务是由 l3 agent 提供的. 除此之外,l3 agent 通过 iptables 提供 firewall 和 floating ip 服务. l3 agent 需 ...
- Linux常用命令之Tmux
Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权.使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“ ...
- MySQL中的用户与授权
grant all on *.* to root@'192.168.20.49'; grant select on *.* to root@192.168.20.49 ; -- dba 可以查询 My ...
- [转帖]Windows7/2008中批量删除隧道适配器的方法
https://www.jb51.net/os/windows/479838.html 客户现场的硬件信息总是发生变化 这里查找一下资料 尝试一下. 1.在网卡属性的“网络”中,将“Internet协 ...
- flutter获取状态栏高度
import 'dart:ui'; MediaQueryData.fromWindow(window).padding.top 系统默认的appBar等高度 位于Dart Packages/flutt ...
- python-itchat 统计微信群、好友数量的实例
今天小编就为大家分享一篇python-itchat 统计微信群.好友数量,及原始消息数据的实例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 效果: 好友: # 获取自己的用 ...