graphql----java使用
来源:互联网 发布:大宋豪侠2java 编辑:程序博客网 时间:2024/06/05 19:06
前言
前一篇,已经讲了go语言中的使用。那么java端如何使用。
maven地址:
<dependency><groupId>com.graphql-java</groupId>
<artifactId>graphql-java</artifactId>
<version>5.0</version>
</dependency>
1.定义用户结构
public class User { private int id; private int age; private int sex; private String name; private String pic; // get set方法}
2. 定义graph 用户结构
private GraphQLOutputType userType;/** * 定义用户对象结构 */private void initOutputType() { userType = GraphQLObjectType.newObject().name("User") .field(GraphQLFieldDefinition.newFieldDefinition().name("id").type(Scalars.GraphQLInt).build()) .field(GraphQLFieldDefinition.newFieldDefinition().name("age").type(Scalars.GraphQLInt).build()) .field(GraphQLFieldDefinition.newFieldDefinition().name("sex").type(Scalars.GraphQLInt).build()) .field(GraphQLFieldDefinition.newFieldDefinition().name("name").type(Scalars.GraphQLString).build()) .field(GraphQLFieldDefinition.newFieldDefinition().name("pic").type(Scalars.GraphQLString).build()) .build();}
3. 定义查询单个用户信息方法
/** * 查询单个用户信息 */private GraphQLFieldDefinition createUserField() { return GraphQLFieldDefinition.newFieldDefinition().name("user") .argument(newArgument().name("id").type(Scalars.GraphQLInt).build()).type(userType) .dataFetcher(environment -> { // 获取查询参数 int id = environment.getArgument("id"); // 执行查询, 这里随便用一些测试数据来说明问题 User user = new User(); user.setId(id); user.setAge(id + 15); user.setSex(id % 2); user.setName("Name_" + id); user.setPic("pic_" + id + ".jpg"); return user; }).build();}
4.查询多个用户信息
/** * 查询多个用户信息 */private GraphQLFieldDefinition createUsersField() { return GraphQLFieldDefinition.newFieldDefinition().name("users") .argument(newArgument().name("page").type(Scalars.GraphQLInt).build()) .argument(newArgument().name("size").type(Scalars.GraphQLInt).build()) .argument(newArgument().name("name").type(Scalars.GraphQLString).build()) .type(new GraphQLList(userType)).dataFetcher(environment -> { // 获取查询参数 int page = environment.getArgument("page"); int size = environment.getArgument("size"); String name = environment.getArgument("name"); // 执行查询, 这里随便用一些测试数据来说明问题 List<User> list = new ArrayList<>(size); for (int i = 0; i < size; i++) { User user = new User(); user.setId(i); user.setAge(i + 15); user.setSex(i % 2); user.setName(name + "_" + page + "_" + i); user.setPic("pic_" + i + ".jpg"); list.add(user); } return list; }).build();}
5.定义 GraphQLSchema 对象
public GraphQLSchema getSchema() { initOutputType(); GraphQLSchema schema = GraphQLSchema.newSchema().query(GraphQLObjectType.newObject().name("GraphQuery") .field(createUsersField()).field(createUserField()).build()).build(); return schema;}
6.执行
import graphql.GraphQL;import graphql.Scalars;import graphql.schema.GraphQLFieldDefinition;import graphql.schema.GraphQLList;import graphql.schema.GraphQLObjectType;import graphql.schema.GraphQLOutputType;import graphql.schema.GraphQLSchema;import java.util.ArrayList;import java.util.List;
public static void main(String[] args) { String query1 = "{users(page:2,size:5,name:\"john\") {id,sex,name,pic}}"; String query2 = "{user(id:6) {id,sex,name,pic}}"; String query3 = "{user(id:6) {id,sex,name,pic},users(page:2,size:5,name:\"john\") {id,sex,name,pic}}"; GraphQLSchema schema = new HelloGraphql().getSchema(); Object result1 = GraphQL.newGraphQL(schema).build().execute(query1).getData(); Object result2 = GraphQL.newGraphQL(schema).build().execute(query2).getData(); Object result3 = GraphQL.newGraphQL(schema).build().execute(query3).getData(); // 查询用户列表 System.out.println(result1); // 查询单个用户 System.out.println(result2); // 单个用户、跟用户列表一起查 System.out.println(result3);}
执行结构:
{users=[{id=0, sex=0, name=john_2_0, pic=pic_0.jpg}, {id=1, sex=1, name=john_2_1, pic=pic_1.jpg}, {id=2, sex=0, name=john_2_2, pic=pic_2.jpg}, {id=3, sex=1, name=john_2_3, pic=pic_3.jpg}, {id=4, sex=0, name=john_2_4, pic=pic_4.jpg}]}
{user={id=6, sex=0, name=Name_6, pic=pic_6.jpg}}
{user={id=6, sex=0, name=Name_6, pic=pic_6.jpg}, users=[{id=0, sex=0, name=john_2_0, pic=pic_0.jpg}, {id=1, sex=1, name=john_2_1, pic=pic_1.jpg}, {id=2, sex=0, name=john_2_2, pic=pic_2.jpg}, {id=3, sex=1, name=john_2_3, pic=pic_3.jpg}, {id=4, sex=0, name=john_2_4, pic=pic_4.jpg}]}
开源库地址:https://github.com/graphql-java/graphql-java
- graphql----java使用
- Java 使用 Graphql , 搭建查询服务
- Java 使用 Graphql , 搭建查询服务
- graphql----javascript使用
- graphql---go http请求使用
- Java:GraphQL 极佳入门实例
- graphql学习(一)graphql-java文档初步阅读
- 使用react-apollo+graphql实现分页操作
- 使用react-apollo+graphql实现Mutation操作
- Facebook 内部是如何使用 JavaScript 和 GraphQL 的
- facebook GraphQL
- GraphQL入门
- GraphQL相关
- GraphQL分享
- GraphQL简介
- GraphQL简介(译)
- Graphql入门_0
- Graphql入门_1
- 第九周项目2-二叉树遍历的递归算法
- 软件测试基础-软件安全性测试
- 数组(十)--二维数组
- Python脚本报错AttributeError: ‘module’ object has no attribute’xxx’解决方法
- jQuery 获取网络时间
- graphql----java使用
- 华为开启log
- Java集合之Vector
- iOS开发 -- KVO的实现原理与具体应用
- html5常用基本标签
- jeesite快速开发平台登录显示暂无数据问题
- Python
- WAMP3.1.0版本(最新版)自定义项目目录
- 最小二乘法 解释很到位的一篇文章