博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GraphQL:了解Spring Data JPA / SpringBoot
阅读量:6800 次
发布时间:2019-06-26

本文共 1346 字,大约阅读时间需要 4 分钟。

GraphQL是API的查询语言。通常,在我们的API中创建REST端点时,通常的趋势是为需求创建端点。假设您的端点返回了一个员工列表,每个员工都有一般属性,例如姓名,年龄和地址(假设地址是映射到员工的另一个模型,每个员工都有一个地址)。现在,在某个时间点,您只需要数据用于其地址,即数据库中所有地址的列表(仅限国家,城市和街道)。为此,您需要在服务中使用全新的端点。

这就是GraphQL的强大功能,它允许您只处理单个端点,并根据请求的主体更改其输出。每个请求都将调用相同的端点,但使用不同的RequestBody。它只会收到它所需的结果。

请参阅代码在GitHub上的完整代码文件。这是一个带有H2数据库的maven项目,它在类路径中有data.sql用于数据库查询。此代码围绕从数据库中获取所有员工的列表。

现在,让我们从Spring Boot的实际实现开始。

我们有两个模型类:员工和地址以及相应的getter和setter。

@实体

@表
公共 类 员工 {
字符串 名称 ;
@ID
字符串 ID ;
INT 年龄 ;
@OneToOne(级联 = CascadeType的。ALL)
@JoinColumn(name = “addid”)
地址 地址 ;
//......getters and setters .... //
}

@实体

@表
公共 类 地址 {
@ID
@GeneratedValue
String addid ;
字符串 国家 ;
弦 城 ;
弦 平 ;
//......getters and setters .... //
}
为了实现存储库,我们将EmployeeRepo作为:

@Repository

公共 接口 EmployeeRepo 扩展了 CrudRepository < Employee,String > {

public List < Employee > findAll();

}

现在,GraphQL在类路径中需要一个.graphqls文件,它解析并理解它需要处理的请求类型。您将在代码中找到employee.graphqls。让我解释一下。

它包含:

类型 员工 {

....... 员工 详细信息

}

并 输入 地址 {

........ 地址 详情

}

在这里,我们定义了类的模式,它们将以某种方式作为对端点的响应返回,即它将返回所有员工,所有员工的地址,仅所有员工的姓名等。 。

我们还定义了:

类型 Query {

allEmployee:[ 员工 ]

}
查询类型(将由客户端发送或将出现在RequestBody中的查询)返回员工列表。

因此,RequestBody到我们的端点将包含一个root查询作为allEmployee。

我们在这里讨论请求:

1.要求所有员工没有地址的请求:

{

allEmployee {
名称

年龄

ID

}
}
2.仅要求员工姓名及其所属国家/地区的请求:

{

allEmployee {
名称
地址 {
国家
}
}

}

3.仅要求所有员工的地址的请求将是:

{

allEmployee {

地址 {

国家

市            平面            ADDID

}

}

}

转载地址:http://xjywl.baihongyu.com/

你可能感兴趣的文章
微软Win10免费升级通知开启“自毁”模式
查看>>
英国《数字经济法案》
查看>>
必须了解的五个光伏发电财务和税收政策
查看>>
思默特获评“用户满意服务奖”荣誉
查看>>
CYQ.DBImport 数据库反向工程及批量导数据库工具 V1.0 发布
查看>>
AT&T开发出400 GbE试验的SDN控制器
查看>>
DBA生存警示:主备环境误操作案例及防范建议
查看>>
聊天机器人并不适合每一项业务和每个人
查看>>
拼写错误影响黑客盗窃数亿美元
查看>>
真正的持续集成:分布式代码仓库和依赖
查看>>
KDD论文解读 | 想要双11抢单快?靠这个技术提速9MS
查看>>
Asp.net与Flex交互测试记录
查看>>
两招抵御APT攻击
查看>>
教师节有“假期” 网络电话传递温情祝福
查看>>
人们应将公共云与私有云的辩论抛之脑后
查看>>
RFID技术或将代替条形码和二维码
查看>>
新三板上市公司突破6000家安防公司103家
查看>>
中天携手协鑫集成共拓光伏市场
查看>>
云存储与视频监控协力合作 平安城市再提速
查看>>
Windows环境搭建Web自动化测试框架Watir
查看>>