Java / Spring:如何使用Speedment完全生成CRUD REST API

在本文中,您将学习如何使用Speedment为数据库创建完整的CRUD REST API。



每年变得越来越明显的是,Spring框架是使用最广泛的Java Web开发框架之一。

随着下一个十年的到来,Spring最受欢迎的模块Spring Boot刚刚进行了重大更新。 Spring Boot“ 2.2.0”和2020的新版本几乎完美匹配。 因此,Speedment开发团队通过更新Spring Boot插件填补了这一空白。

如果这是您第一次了解Speedment,那么我们将展示Spring Boot Speedment插件如何使开发人员轻松地使用Speedment ORM和基于功能强大的基于Stream API的查询界面来创建Spring数据库应用程序,从而使您满意。

关于速度


速度可以描述为Java社区应得的ORM,这是一个适合那些喜欢快速开发甚至更快的应用程序的人的工具包。

通过使用Java Stream API作为与所选数据库进行通信的主要方式,Speedment使具有Java经验的开发人员感到宾至如归。 除了易于使用的API,Speedment还为开发人员提供了图形化工具,可在几秒钟内为他们生成域模型。

如果您对整体加速感兴趣,请单击以下链接以获取带有示例的详细文档 。 本文的其余部分将重点介绍Spring Boot插件。

春季启动:最快的开始


Speedment Spring Boot插件已经存在了一段时间,但是Speedment 3.2.2引入了主要功能-直接从您的数据库模型生成整个CRUD REST API的能力。

根据您是从头开始还是已经拥有一个项目,步骤会有所不同,但是请确保无论项目状态如何,集成过程都将是简单的。

如果要将Spring Boot集成到现有Speedment项目中,则需要将以下2个元素添加到pom.xml中

<plugin> <groupId>com.speedment.enterprise</groupId> <artifactId>speedment-enterprise-maven-plugin</artifactId> <version>${speedment.version}</version> <configuration> <components> component>com.speedment.enterprise.plugins.spring.SpringGeneratorBundle</component> </components> <appName>${project.artifactId}</appName> <packageName>${project.groupId}</packageName> </configuration> ... // Database connector dependency </plugin> <dependencies> ... <dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.1.RELEASE</version> </dependency> <dependency> <groupId>com.speedment.enterprise.plugins</groupId> <artifactId>spring-runtime</artifactId> <version>${speedment.version}</version> </dependency> ... </dependencies> 

在域模型的下一次重新生成中添加这些元素之后,应生成特定于Spring的配置。 生成的配置控制Speedment生成的各种管理器的数据库连接和bin注册属性。

如果您是从头开始的项目,请转到项目初始化程序 ,将在其中为Spring Boot创建一个现成的项目。 如何配置项目取决于您自己,但是要在生成的项目中包括Spring Boot插件,请确保在“插件”部分中选中了Spring旁边的复选框。 当项目配置适合您时,单击下载按钮,您将收到准备使用的项目档案。



CRUD简化


安装插件后,Speedment工具中将提供一些特定的Spring Boot选项,可用于配置REST API。 您可以通过运行以下命令来运行Speedment工具:

 mvn speedment:tool 

如果这是您第一次使用Speedment,则可能需要按照简短的Hello Speedment教程熟悉一下工作流程。

默认情况下,Speedment工具不会生成REST API。 要为特定表生成CRUD REST API,请在树视图中选择表,然后选择“ Generate @RestController ”复选框以及“ REST Enable Create / Update / Delete ”选项。 当您单击Generate时 ,将创建一组REST映射-为特定表实现CRUD操作的URL。



仅此而已! 不需要手动编码。 只需运行以下命令即可运行生成的Spring项目:

 mvn spring-boot:run 

使用REST创建实体


要使用您创建的REST API创建新实体,必须在工具中指定的路径上执行POST请求。 默认情况下,此路径的名称与表名称和模式名称的前缀匹配。 如果清除“ REST Endpoint ”复选框,则可以指定任意路径名。 请求主体必须在JSON对象中包含键/值对,其中来自Speedment工具的“ REST字段名称 ”值是键。

例如,如果我们有一个名为person的表,其IDIDnameage ,则将发送以下查询以创建一个新的person实体:

 POST localhost:8080/db/person { "id": 1, "name": "Jane", "age": 25 } 



 curl -d '{"id": 1,"name": "Jane","age": 25}' -H "Content-Type:application/json" -X POST localhost:8080/db/person 

如果id列的值是自动生成的(或使用序列),则可以将其从POST正文中排除。 如果要从POST正文中强制排除特定的列,请在工具树视图中单击相应的列,然后取消选中“ 包括在创建正文中”框,然后重新创建域模型。 另一方面,如果要确保在执行请求时POST正文中存在特定的列,请选中“在创建正文中是必需的”并重新创建域模型。



使用REST检索实体


要获取新创建的实体,我们必须以与创建实体相同的方式执行GET请求:

 GET localhost:8080/db/person 



 curl localhost:8080/db/person/1 

完成的请求将返回所有现有实体的JSON数组。 在我们的例子中,它将仅返回具有唯一实体的数组:

 [ { "id": 1, "name": "Jane", "age": 25 } ] 

Speedment的官方文档中详细介绍了过滤器和分类器等高级概念。

使用REST更新现有实体


使用REST API更新现有实体类似于创建实体。 代替POST请求,我们执行PATCH请求,并使用实体标识符扩展路径。 我们实体的哪个标识符取决于此表的主键列。 由于我们的PK(主键)列是数字类型,因此我们的实体标识符将是整数。

要更新在上一个示例中创建的实体,我们将运行以下查询:

 PATCH localhost:8080/db/person/1 { "name": "Mike", "age": 43 } 


 curl -d '{"name": "Jane","age": 25}' -H "Content-Type:application/json" -X PATCH localhost:8080/db/person/1 

默认情况下,所有列都包含在PATCH主体中(主键列除外),但不是必需的。 如果要强制从请求正文中排除特定的列,请在工具树视图中单击相应的列,然后取消选中“ 包括在更新正文中”框,然后重新创建域模型。 另一方面,如果要确保请求正文中存在列,请选中“ Update Body中必需 ”并更新您的域模型。

使用REST移除实体


使用REST API删除实体非常简单-我们以与更新实体相同的方式执行DELETE请求。

要删除我们在前面的示例中创建和更新的实体,我们将运行以下查询:

 DELETE localhost:8080/db/person/1 



 curl -X DELETE localhost:8080/db/person/1 

总结


启动新项目有时会很麻烦。 作为开发人员,我们希望尽可能避免这些不便,并直接投入编码中。 使用新的Speed Boot Spring Boot插件,开发人员可以直接从数据库中自动生成所有必要的配置和REST控制器,从而加快新项目的启动。

我们希望您喜欢Speedment Spring Boot插件提供的有关新CRUD功能的简短指南。 如果您对新功能的更详细说明感兴趣,请访问官方文档 ,在该文档中可以找到新CRUD功能的详细说明和示例。

补充阅读


创建REST API第4部分:处理POST,PUT和DELETE请求

构建基本的CRUD RESTful Spring Boot MVC应用程序:Java Spring入门

Source: https://habr.com/ru/post/zh-CN483026/


All Articles