介紹就不多說了,直接上代碼吧,實際運用中遇到的
1.可以用postman測試,覈對你代碼查詢結果
2.導入jar包
<!-- https://mvnrepository.com/artifact/org.mountcloud/graphql-client --> <dependency> <groupId>org.mountcloud</groupId> <artifactId>graphql-client</artifactId> <version>1.2</version> </dependency>
3.後端查詢,代碼部分參數如圖所示
例1
String serverUrl = "http://localhost:8082/graphql"; GraphqlClient graphqlClient = GraphqlClient.buildGraphqlClient(serverUrl); String queryMethodName = "findOneAuthor "; GraphqlQuery query = new DefaultGraphqlQuery(queryMethodName); query.addParameter("id",1); query.addResultAttributes("firstName","lastName"); GraphqlResponse response = graphqlClient.doQuery(query); //獲取數據,數據爲map類型 Map result = response.getData();
........
例2
public static void graphQLQuery(){ String serverUrl = "http://localhost:8082/graphql"; GraphqlClient graphqlClient = GraphqlClient.buildGraphqlClient(serverUrl); String queryMethodName = "findAuthorsByFilter"; GraphqlQuery query = new DefaultGraphqlQuery(queryMethodName); //數組裏面可以是具體的某個對象(比如User對象),也可是是Map,但是裏面包含的key值,需要與接口方式裏面能接收的參數對應,如下所示 List<Map<String,Object>> filterList = new ArrayList<>(); Map<String,Object> map1 =new HashMap<>(); map1.put("firstName","Jim");//User.firstName = Jim map1.put("lastName","Green");//User.lastName= Green filterList.add(map1); //此步驟要注意,如果入參非基本類型,建議使用addObjectParameter方式, // 很奇怪,不能直接query.addObjectParameter(...),需要放在非第一個參數位置 // 疑問,要是沒有其他參數,這個方法不就是不能使用了 ??有時間了研究一下 query.addParameter("first",3).addObjectParameter("filter",filterList); query.addResultAttributes("firstName","lastName"); try { //執行query GraphqlResponse response = graphqlClient.doQuery(query); //獲取數據,數據爲map類型 Map result = response.getData(); Map m2 = (Map)result.get("data"); List<Map> findAllAuthors = (List<Map>)m2.get(queryMethodName); for (Map map:findAllAuthors){ System.out.println(map.get("firstName").toString()+"----" +map.get("lastName").toString()); } } catch (IOException e) { e.printStackTrace(); } }
參照
https://my.oschina.net/genghz/blog/1789240?from=groupmessage