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算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的.比 ...
随机推荐
- VUE 简单属性操作
在main.js内配置路由及相应模板 import Vue from 'vue' import App from './App' // 引入router路由 import Router from 'v ...
- VC++6.0
for 循环的小括号中 不可以定义变量 我也是醉了
- 使用原生 JS 复制文本兼容移动端 iOS & android
注意事项 使用 JS 实现复制功能并不是很难,但是有几个需要注意的地方. 首先文本只有选中才可以复制,所以简单的做法就是创建一个隐藏的 input,然后绑定需要复制的文本. 另外如果将 input 设 ...
- Riemann流形上的梯度,散度与Laplace算子
今天(准确地说是昨天)被学物理的同学问到Stokes定理,想起来我还有一个知道但没有细看的东西,下面整理成提示完整的习题记录一下. 这部分内容将会加进几何学观止,敬请期待.目前正在纂写代数几何簇的部分 ...
- [转帖]御界预警:3700余台SQL服务器被入侵挖矿 或导致严重信息泄露事件
御界预警:3700余台SQL服务器被入侵挖矿 或导致严重信息泄露事件 https://zhuanlan.kanxue.com/article-8292.htm sqlserver的弱密码破解和提权攻击 ...
- Django(六)Session、CSRF、中间件
大纲 二.session 1.session与cookie对比 2.session基本原理及流程 3.session服务器操作(获取值.设置值.清空值) 4.session通用配置(在配置文件中) 5 ...
- element vue 表格编辑
https://xuliangzhan.github.io/vue-element-extends/#/editable/click1
- PHP——??空合并运算符和?:三元运算符
前言 在上一篇随笔,用三元运算符简单写的一个东西,引发了对他的兴趣,所以打算研究下. PHP7的新特性: https://php.net/manual/zh/migration70.new-featu ...
- 《java核心技术36讲》学习笔记-------杨晓峰(极客时间)
非常荣幸作为晓峰哥的同事,之前就看过这篇文章,重写读一遍,再学习学习. 一.开篇词 初级.中级:java和计算机科学基础.开源框架的使用:高级.专家:java io/nio.并发.虚拟机.底层源码.分 ...
- Codeforces Round #549 (Div. 1)
今天试图用typora写题解 真开心 参考 你会发现有很多都是参考的..zblzbl Codeforces Round #549 (Div. 1) 最近脑子不行啦 需要cf来缓解一下 A. The B ...