iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么利用Spring Boot和JPA创建GraphQL API
  • 813
分享到

怎么利用Spring Boot和JPA创建GraphQL API

2023-06-30 10:06:20 813人浏览 安东尼
摘要

本篇内容主要讲解“怎么利用spring Boot和JPA创建GraphQL api”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用Spring Boot和JP

本篇内容主要讲解“怎么利用spring Boot和JPA创建GraphQL api”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用Spring Boot和JPA创建GraphQL API”吧!

一、生成项目

https://start.spring.io/并生成一个项目,不要忘记添加Spring WEB、H2数据库和Spring DATA JPA依赖项。

怎么利用Spring Boot和JPA创建GraphQL API

1. 添加依赖项

要启用GraphQL的使用,请在下面添加这两个依赖项。

<dependency>  <groupId>com.<a href="Https://javakk.com/tag/graphql" rel="external nofollow"  target="_blank" >graphql</a>-java</groupId>  <artifactId>graphql-spring-boot-starter</artifactId>  <version>5.0.2</version></dependency><dependency>  <groupId>com.graphql-java</groupId>  <artifactId>graphql-java-tools</artifactId>  <version>5.2.4</version></dependency>

二、Schema

GraphQL模式定义了通过API可用的数据点。模式描述了数据类型及其关系,以及可用的操作,例如检索数据的查询和创建、更新和删除数据的突变。

在resources文件夹中,创建一个扩展名为“.graphqls”的文件,全名为“location.graphqls”。

//Define the Entity attributetype Location { id: ID! name: String! address: String!}type Query { findAllLocations: [Location]!}type Mutation { newLocation(name: String!, address: String) : Location! deleteLocation(id:ID!) : Boolean updateLocationName(newName: String!, id:ID!) : Location!}

!”表示该字段为必填字段。

三、Entity 和 Repository

怎么利用Spring Boot和JPA创建GraphQL API

现在创建一个名为Location的实体。该位置应该有三个属性:idnameaddress,如模式中所述。当然,也会产生 Getters, Setters, 和 Constrictors。

然后,在本例中,存储库只使用CrudRepository,并扩展位置实体。

//imports...public interface LocationRepository extends CrudRepository<Location, Long> {}

四、Queries & Exceptions

1. 查询

查询允许我们检索数据。每个查询可以有一个特定的对象,它完全基于查询中指定的字段返回,您可以添加或删除字段以匹配您需要的确切数据,以适合您的特定用例。

创建一个解析器包,然后添加一个实现GraphQLQueryResolver的新查询类,并添加@Component注释。我们只需要添加之前在location中输入的location.graphqls

//imports...@Componentpublic class Query implements GraphQLQueryResolver {    private LocationRepository locationRepository;    public Query(LocationRepository locationRepository) {        this.locationRepository = locationRepository;    }    public Iterable<Location> findAllLocations() {        return locationRepository.findAll();    }}

2. Mutator

GraphQL中的Mutator允许它更新存储在服务器上的数据。与查询不同,创建、更新或删除等Mutator会改变数据。

现在创建一个mutator包,然后添加一个实现GraphQLMutationResolver和添加@Component注释的新类Mutation。另外,添加我们之前输入的location.graphqls

//imports...@Componentpublic class Mutation implements GraphQLMutationResolver {    private LocationRepository locationRepository;    public Mutation(LocationRepository locationRepository) {        this.locationRepository = locationRepository;    }    public Location newLocation(String name, String address) {        Location location = new Location(name, address);        locationRepository.save(location);        return location;    }    public boolean deleteLocation(Long id) {        locationRepository.deleteById(id);        return true;    }    public Location updateLocationName(String newName, Long id) {        Optional<Location> optionalLocation =                locationRepository.findById(id);        if(optionalLocation.isPresent()) {            Location location = optionalLocation.get();            location.setName(newName);            locationRepository.save(location);            return location;        } else {            throw new LocationNotFoundException("Location Not Found", id);        }    }

3. Exceptions

创建一个异常包,然后添加一个新的类LocationNotFoundException,该类扩展RuntimeException并实现GraphQLError

//imports...public class LocationNotFoundException extends RuntimeException implements GraphQLError {    private Map<String, Object> extensions = new HashMap<>();    public LocationNotFoundException(String message, Long invalidLocationId) {        super(message);        extensions.put("invalidLocationId", invalidLocationId);    }    @Override    public List<SourceLocation> getLocations() {        return null;    }    @Override    public Map<String, Object> getExtensions() {        return extensions;    }    @Override    public ErrorType getErrorType() {        return ErrorType.DataFetchingException;    }

到此,相信大家对“怎么利用Spring Boot和JPA创建GraphQL API”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么利用Spring Boot和JPA创建GraphQL API

本文链接: https://www.lsjlt.com/news/328289.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 利用Spring Boot和JPA创建GraphQL API
    目录一、生成项目1. 添加依赖项二、Schema三、Entity 和 Repository四、Queries & Exceptions1. 查询2. Mutator3. Ex...
    99+
    2024-04-02
  • 怎么利用Spring Boot和JPA创建GraphQL API
    本篇内容主要讲解“怎么利用Spring Boot和JPA创建GraphQL API”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用Spring Boot和JP...
    99+
    2023-06-30
  • 怎么用Thymeleaf创建Spring Boot项目
    这篇“怎么用Thymeleaf创建Spring Boot项目”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们...
    99+
    2024-04-02
  • 利用Spring boot如何创建简单的web交互应用
    关于页面渲染其实在工作中,一直都是前后端分离,也就是说,我的工作从来都是提供接口,而不写 html css js 之类的,所以在这方面也没有经验。这里为了给大家介绍下模板引擎,我将会写个非常非常简单的页面,如果不好看,请见谅~Spring ...
    99+
    2023-05-31
    springboot web 交互应用
  • Spring Boot集成Swagger2怎么构建API文档
    这篇文章主要讲解了“Spring Boot集成Swagger2怎么构建API文档”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Boot集成Swagger2怎...
    99+
    2023-06-29
  • 怎么利用Spring Boot 搭建一个微服务框架
    这篇文章将为大家详细讲解有关怎么利用Spring Boot 搭建一个微服务框架,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言:SpringBoot是为了简化Spring应用的创建、运行、...
    99+
    2023-05-31
    springboot spring boo
  • spring boot多模块项目怎么利用Maven进行搭建
    今天就跟大家聊聊有关spring boot多模块项目怎么利用Maven进行搭建,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。备注:所有项目都在idea中创建idea创建maven项目...
    99+
    2023-05-31
    springboot maven 多模
  • spring data jpa怎么创建方法名进行简单查询
    本文小编为大家详细介绍“spring data jpa怎么创建方法名进行简单查询”,内容详细,步骤清晰,细节处理妥当,希望这篇“spring data jpa怎么创建方法名进行简单查询”文章能帮助大家...
    99+
    2023-06-29
  • 利用spring-boot怎么允许接口跨域
    今天就跟大家聊聊有关利用spring-boot怎么允许接口跨域,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。pom.xml(依赖的jar)// 在spring-boot-starte...
    99+
    2023-05-31
    springboot 跨域
  • Spring Boot怎么利用XML方式整合MyBatis
    本篇内容介绍了“Spring Boot怎么利用XML方式整合MyBatis”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、前言下...
    99+
    2023-06-30
  • 怎么在SAP的API portal里创建和管理API
    这篇文章主要讲解了“怎么在SAP的API portal里创建和管理API”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在SAP的API portal里创建和管理API”吧!登录API P...
    99+
    2023-06-04
  • 怎么利用脚本部署一个Spring Boot应用
    这篇文章给大家介绍怎么利用脚本部署一个Spring Boot应用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。部署方法如下:在 pom.xml 路径下新建文件 start.sh#!/bin/bash#0、删除原有的日志...
    99+
    2023-05-31
    springboot spring boo
  • 怎么在Spring boot中利用validation进行校验
    这篇文章主要为大家详细介绍了怎么在Spring boot中利用validation进行校验,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:前言接触springboot一年多,是时候摆脱这种校验方式了233 ,每...
    99+
    2023-06-06
  • 怎么在Spring Boot中利用ajax上传图片
    本篇文章给大家分享的是有关怎么在Spring Boot中利用ajax上传图片,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。启动类中加入SpringBoot重写addResour...
    99+
    2023-06-08
  • 怎么利用Spring Boot监控SQL运行情况
    本文小编为大家详细介绍“怎么利用Spring Boot监控SQL运行情况”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么利用Spring Boot监控SQL运行情况”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-07-02
  • 怎么在Spring Boot中利用Redis实现session共享
    本篇文章给大家分享的是有关怎么在Spring Boot中利用Redis实现session共享,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。引入spring-boot-start...
    99+
    2023-05-30
    springboot session redis
  • Spring Boot中怎么利用Redis 实现缓存操作
    这期内容当中小编将会给大家带来有关Spring Boot中怎么利用Redis 实现缓存操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、缓存的应用场景二、更新缓存的策略三、运行 springboot-...
    99+
    2023-06-17
  • Kafka和Storm怎么在Spring boot中使用
    这篇文章给大家介绍Kafka和Storm怎么在Spring boot中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。使用工具及环境配置 java 版本jdk-1.8 编译工具使用IDEA-2017 maven作为项...
    99+
    2023-05-30
  • Spring Boot 中怎么利用JSR303 实现参数验证
    今天就跟大家聊聊有关Spring Boot 中怎么利用JSR303 实现参数验证,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Bean Validation 规范内嵌的约束注解实例基...
    99+
    2023-06-05
  • 多数据源怎么利用spring boot进行配置
    本篇文章给大家分享的是有关多数据源怎么利用spring boot进行配置,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。多数据源配置创建一个Spring配置类,定义两个DataS...
    99+
    2023-05-31
    springboot 多数据源
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作