Java / Spring:如何快速生成整个数据库CRUD REST API

随着时间的流逝,Spring框架已成为Java中使用最广泛的Web开发框架之一,这一点已变得显而易见。 在接下来的十年之际,Spring最受欢迎的模块Spring Boot刚刚进行了重大更新。

新的Spring Boot版本“ 2.2.0”和年份“ 2020”几乎完美匹配。 因此,Speedment团队现在通过改进Spring Boot插件来填补空白。

如果这是您第一次了解Speedment,那么您将大饱口福,因为我们将演示Speedment Spring Boot插件如何使开发人员轻松地使用Speedment构建Spring数据库应用程序,Speedment是一个具有基于Stream的强大查询API的ORM ,作为其骨干。

关于速度

速度可以描述为Java社区应得的ORM –一种工具包,适合那些喜欢快速开发甚至更快的应用程序的人。 通过利用Java Stream API作为与您选择的数据库进行通信的主要方式,Speedment使具有Java经验的开发人员感到宾至如归。 除了易于使用的API外,Speedment还为开发人员提供了图形化工具,可在几秒钟内为他们生成域模型。

如果您总体上对Speedment感兴趣,可以找到带有示例的详细文档
在这里 。 本文的其余部分将重点介绍Spring Boot插件。

Spring Boot:最快的开始

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

步骤取决于您是从头开始还是已有项目,步骤会有所不同,但是请放心,无论您的项目状态如何,集成过程都不费吹灰之力。

如果您希望将Spring Boot集成到现有的Speedment项目中,则需要在pom.xml中添加以下2个子句:

<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>

添加后,下次重新生成域模型时,应生成特定于Speedment的Spring配置。 生成的配置为Speedment生成的各种管理器处理数据库连接属性和Bean注册。

如果您是从头开始,请转到项目初始化程序 ,为您生成一个Spring-Boot-ready项目。 如何配置项目取决于您自己,但是要在生成的项目中包括Spring Boot插件,请确保选中了Plugins部分中Spring旁边的复选框。 对项目配置满意后,单击“下载”按钮,您将收到一个准备好使用的压缩项目。

轻松进行CRUD

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

 mvn speedment:tool 
 <br> 

如果这是您第一次使用Speedment,则可能需要按照以下说明熟悉工作流程
“ Hello Speedment”快速入门指南。

默认情况下,Speedment工具不会生成REST API。 要为特定表生成CRUD REST API,请在树视图中选择该表,然后选中“ Generate @RestController”选项和“ REST Enable Create / Update / Delete”选项。 通过单击“生成”,将生成一组为特定表实施CRUD操作的REST映射。

而已! 无需手动编码。 只需通过发出以下命令来启动生成的Spring:

 mvn spring-boot:run 

使用REST创建实体

要使用生成的REST API创建新实体,必须对工具中指定的路由执行POST请求。 默认情况下,此路由的名称与表的名称相同,并以模式名称为前缀。 如果取消选中“ REST Endpoint”选项,则可以指定自定义路由名称。 请求主体应在JSON对象中包含键值对,其中该工具的“ REST字段名称”值是键。

如果我们要创建一个名为“ person”的表,其中包含“ id”,“ name”和“ age”列,我们将发送以下请求以创建一个新的“ 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 

如果列是自动生成的(或正在使用序列),则可以将其从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主体中(“主键”列除外),但是它们不是强制性的。 如果您希望从请求正文中强制排除某些列,请在工具树视图中单击特定列,然后取消选中“包含在更新正文中”并重新生成域模型。 另一方面,如果要在请求正文中强制列存在,请选中“在更新正文中是必需的”并重新生成域模型。

使用REST删除实体

使用REST API删除实体非常简单–我们在用于实体更新的同一路径上执行DELETE请求。

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

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

摘要

启动新项目有时会很麻烦。 作为开发人员,我们希望尽可能避免这些不便,并直接涉足编码。 借助Speedment的新Spring Boot插件,开发人员可以直接从数据库中自动生成所有必要的配置和REST控制器,从而领先于游戏。

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

翻译自: https://www.javacodegeeks.com/2019/12/java-spring-how-to-generate-an-entire-database-crud-rest-api-with-speedment.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python界面长什么样图片_python界面是什么样的

安装完Python&#xff0c;在命令行输入“python”之后&#xff0c;如果成功&#xff0c;会得到类似于下面的窗口&#xff1a;可以看到&#xff0c;结尾有3个>符号&#xff08;>>>&#xff09;。>>>被叫做Python命令提示符&#xff08;prompt&#xff09;&…

python表格控件_python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例...

PyQt5表格控件QTableView简介 在通常情况下&#xff0c;一个应用需要和一批数据进行交互&#xff0c;然后以表格的形式输出这些信息&#xff0c;这时就需要用到QTableView类了&#xff0c;在QTableView中可以使用自定义的数据模型来显示内容&#xff0c;通过setModel来绑定数据…

Linux文件系统为,浅析Linux文件系统

原标题&#xff1a;浅析Linux文件系统一、文件系统层次分析由上而下主要分为用户层、VFS层、文件系统层、缓存层、块设备层、磁盘驱动层、磁盘物理层用户层最上面用户层就是我们日常使用的各种程序&#xff0c;需要的接口主要是文件的创建、删除、打开、关闭、写、读等。VFS层我…

求解出n以内所有能被5整除的正整数的乘积_所有最常见最经典的算法题都在这里了...

1、一群猴子排成一圈&#xff0c;按1&#xff0c;2&#xff0c;…&#xff0c;n依次编号。然后从第1只开始数&#xff0c;数到第m只,把它踢出圈&#xff0c;从它后面再开始数&#xff0c;再数到第m只&#xff0c;在把它踢出去…&#xff0c;如此不停的进行下去&#xff0c;直到…

linux lvm 系统快照,系统运维|在 LVM中 录制逻辑卷快照并恢复(第三部分)

LVM快照是以空间换时间时间的方式制作的lvm卷副本。它只在lvm中工作&#xff0c;并只在源逻辑卷发生改变时占用快照卷的空间。如果源卷的变化达到1GB这么大&#xff0c;快照卷同样也会产生这样大的改变。因而&#xff0c;对于空间有效利用的最佳途径&#xff0c;就是总是进行小…

python语言变量随时声明_2. Go语言五种变量创建的方法

对于只有 Python 语言经验的朋友&#xff0c;也许会不太理解声明这个词&#xff0c;在 Python 中直接拿来就用&#xff0c;也不用声明类型啥的。 Go 语言是静态类型语言&#xff0c;由于编译时&#xff0c;编译器会检查变量的类型&#xff0c;所以要求所有的变量都要有明确的类…

会java需要多久能学会python_java好学吗?零基础学java要多久?

java好学吗&#xff1f;零基础学java要多久&#xff1f; 时间&#xff1a;2019-05-21 来源&#xff1a;华清远见 2019年3月&#xff0c;tiOBE 公布了编程语言排行榜&#xff0c;正如官方所说&#xff0c;本月的排名几乎没有任何有趣的变化&#xff0c;排名前十的依然是&…

jboss架构_检查Red Hat JBoss BRMS部署架构的规则和事件(第二部分)

jboss架构&#xff08;文章来宾与北美红帽公司高级中间件顾问约翰赫洛克 &#xff08; John Hurlocker&#xff09;合着&#xff09; 在这周的技巧中&#xff0c;我们将放慢速度&#xff0c;并仔细研究可能的Red Hat JBoss BRMS部署体系结构。 在谈论部署体系结构时&#xff…

TestNG中的参数化– DataProvider和TestNG XML(带有示例)

测试自动化&#xff0c;或所谓的自动化测试&#xff0c;并不像听起来那样容易。 必须考虑所有可能的用户交互的所有排列和组合&#xff0c;并且在此基础上&#xff0c;您将必须创建测试脚本以通过多种浏览器和OS组合来验证Web应用程序。 这就是参数化在Selenium自动化测试中起关…

zbrush 添加纹理贴图_想学习3D游戏模型,3Dmax、MAYA和ZBrush都需要掌握吗?

想从事游戏行业的建模的话&#xff0c;模型和贴图的知识都得学&#xff0c;MAYA和3DMAX只能说是基本要学的&#xff0c;Zbrush能够提升个人价值&#xff0c;之后能给你建好的模型做出好看的贴图&#xff0c;才能算是一个游戏建模方面能干活的合格从业人员。新手入门的话&#x…

file.getpath_Java中File的getPath(),getCanonicalPath()和getAbsolutePath()之间的区别...

file.getpathFile API在Java中非常重要&#xff0c;因为它使文件系统可以访问Java程序。 尽管Java的文件API丰富&#xff0c;但是使用它们时仍需要了解很多细节。 关于文件路径的常见查询程序员之一是getPath() &#xff0c; getCanonicalPath()和getAbsolutePath()方法之间的区…

linux 在线帮助,linux获取在线帮助

Linux系统的帮助文档非常丰富。帮助手册提供命令的使用说明。比如你若是想了解ls命令的用法&#xff0c;只需运行&#xff1a;$ man ls帮助手册旨在提供基础知识和参考信息&#xff0c;有时会有一些实例和交叉索引&#xff0c;但是基本没有那种教程式的文档。帮助手册会按系统排…

linux中samba详解,详解linux系列之samba的安装及配置

上篇博文中我介绍了FTP&#xff0c;今天我们来介绍一下samba实现文件共享。这个比FTP更好点&#xff0c;因为对用户的权限可以通过samba权限和系统权限交叉使用&#xff0c;取最严格的。可以让windows更容易的从linux系统上存取文件&#xff0c;还有samba也可以让linux上面的打…

使用Apache Kafka,Kubernetes和Envoy,Istio,Linkerd的服务网格和云原生微服务

微服务架构不是免费的午餐 &#xff01; 微服务需要解耦&#xff0c;灵活&#xff0c;操作透明&#xff0c;数据感知和弹性。 过去几年的大多数材料仅讨论具有紧密耦合且不可扩展的技术&#xff08;如REST / HTTP&#xff09;的点对点体系结构。 这篇博客文章介绍了Apache Kafk…

单片机控制三相异步电动机正反转c语言程序,请用PLC控制一台普通三相异步电动机的正反转控制,设计其控制程序梯形图及主电路...

PLC的编程方法及步骤。总的步骤主要有三步&#xff1a;一、根据电路图选择电器元件及PLC的型号&#xff0c;其中包括确定PLC的输入输出点位、确定PLC的输出类型&#xff0c;也需考虑某些功能是否能扩展、价格等&#xff1b;二、设计好PLC控制的外围元器件的原理图。这里面包括有…

0x80070003系统找不到指定路径_Win7系统中gpedit.msc找不到应该如何解决?

Win7x系统gpedit.msc找不到怎么办&#xff1f;最近有用户反映&#xff0c;电脑当中的gpedit.msc找不到了&#xff0c;gpedit.msc就是我们的策略组&#xff0c;对于我们的电脑来说是非常重要的&#xff0c;那么gpedit.msc找不到应该如何解决呢&#xff1f;接下来就为大家分享win…

c语言回文数递归,c语言问题~~~回文数!!急,拜托高人指点!!

满意答案wyhjjq12014.01.27采纳率&#xff1a;53% 等级&#xff1a;12已帮助&#xff1a;10413人添加上满足你补充要求的C程序:#includeint palindrome(unsigned int x){unsigned int y;unsigned int s0;yx;while(y>0){ss*10y%10;yy/10;}if(sx)return 1;elsereturn 0;}vo…

jboss架构_检查Red Hat JBoss BRMS部署架构的规则和事件(第一部分)

jboss架构&#xff08;文章来宾与北美红帽公司高级中间件顾问约翰赫洛克 &#xff08; John Hurlocker&#xff09;合着&#xff09; 在这周的技巧中&#xff0c;我们将放慢速度&#xff0c;并仔细研究可能的Red Hat JBoss BRMS部署体系结构。 在谈论部署体系结构时&#xf…

snvr client怎么使用_TCGA官方工具gdc-client.exe的安装及使用

在TCGA数据下载过程中&#xff0c;会提示使用Download a manifest for use with theGDC Data Transfer Tool​gdc.cancer.gov实现过程&#xff1a;1.下载gdc-client的压缩文件&#xff1b;gdc-client_v1.4.0_Windows_x64.zip2.将上述压缩文件copy到一个英文文件名称的文件夹内&…

js时间选择器_Vuestic Admin一款免费与美妙基于Vue.js开发的管理模板

Vuestic Admin 简介vuestic admin是一款流行&#xff0c;免费与美妙的基于Vue.js开发出来的管理模板&#xff0c;包括38以上个定制用户界面组件&#xff0c;由Epicmax开发,由Vasili Savitski设计。目前github star 6K, 最新版本2.0.0, MIT许可协议。为什么选择Vuestic AdminVue…