介绍
官方定义:
GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。
中文官网:graphql.cn/
集成方案选择
GraphQL经过近几年的发展,SpringBoot官方、第三方都提供了starter
SpringBoot官方提供的starter
:spring.io/projects/sp…
第三方提供的starter
:github.com/graphql-jav…
两者活跃度都还不错,但考虑到SpringBoot官方的依赖库还未GA,而且使用起来与Spring家族耦合过大,最终决定采用第三方的starter
集成过程
数据库配置
此处采用MySQL数据库,数据内容采用MySQL官方样例sakila
数据,表结构和数据地址如下
downloads.mysql.com/docs/sakila…
导入后如下
工程配置
引入最新的SpringBoot框架,依赖如下
1 | xml复制代码<dependencies> |
增加数据库配置
1 | yaml复制代码spring: |
实体映射
新增实体映射,此处只映射Actor
表作为样例
1 | java复制代码package top.fjy8018.graphsqldemo.entity; |
新增DAO
1 | java复制代码package top.fjy8018.graphsqldemo.repository; |
新增查询接口配置
在resources/graphql
下新增文件actor.graphqls
1 | typescript复制代码type Query { |
新增查询解析器
1 | java复制代码package top.fjy8018.graphsqldemo.resolver; |
启动验证
启动工程后,浏览器打开http://localhost:8080/graphiql
列表查询
由于采用交互式页面,输入也会有语法提示,比较方便
唯一查询
优缺点分析
优点
- 接口定义清晰,配置即接口
- 前端按需获取字段,减少数据传输量
- 接口整合、演进更加便利
缺点
- 减少字段个数对后端实现没有变化,并不能提升数据库性能
样例源码地址
本文转载自: 掘金