用spri从数据库中自动生成rest API

如果您有一个现有的数据库,并且您想编写一个前端来使用它,您经常会发现自己花费数小时在数据库和前端之间建立连接。 如果你能简单地按下一个按钮并直接生成整个休息应用编程接口,那将会更有效地利用你的时间。

Speedment是一个工具,它使用代码生成来生成基于现有数据库结构的定制领域模型。 查询可以直接发送到数据库,也可以从内存中提供,以获得更好的性能。 在本文中,我们将使用免费加速的官方插件“弹簧生成器”来生成一个完整的弹簧应用程序,以提供一个简单的休息应用编程接口。 我们将添加对分页、远程过滤和排序的支持,而不需要编写一行代码。

在下面的例子中,我们将Sakila数据库用于MySQL。 Sakila是一个模拟电影租赁店的示例数据库。 它有称为电影、演员、类别等的表格。

我们需要做的第一件事是配置我们的文件来使用最新的加速依赖和Maven插件。 最快的方法是使用你可以在这里找到的加速初始化器生成一个文件。 如果你在插件列表中选择“春天”,然后按“下载”,你会得到一个完整的项目文件夹和一个自动生成的文件。


接下来,打开下载文件的命令行,并输入以下内容:


这将启动加速工具,并提示您输入许可证密钥。 只需选择“免费开始”,您将获得免费许可证! 注册后,您可以连接到数据库并开始使用。

默认情况下,除了常规的加速数据库实时同步 类之外,插件唯一添加的就是一个bean。 要为您的表实际生成控制器,您可以选择左侧树中的表,然后选中右侧的“生成@RestController”。

这将启用它下面的许多选项,但我们将在一分钟内讨论这些选项。 现在,您只需要做这些就可以启用控制器逻辑。 单击“生成”生成代码。

在集成开发环境中,您现在可以看到许多类。 如果你从初始化器下载了-文件,那么你应该已经有了-文件。 确保它在正确的文件夹中,然后构建并运行应用程序。


您可以通过调用:


简单吧。

spring-generator插件的一个很酷的特性是它支持远程过滤。 这意味着前端可以将编码为JSON对象的谓词发送到服务器,服务器将使用过滤后的JSON响应进行响应。 加速会自动将JSON过滤器解析成一个SQL语句。 如果您希望每秒能够处理数千个请求,还可以启用Speedment Datastore直接从内存中处理查询,在这种情况下,JSON过滤器将被解析以找到适当的内存索引。

JSON过滤器的语法很简单。 要获得长度小于60分钟的电影,您只需拨打:


(G参数确保命令是作为获取请求而不是发布请求发送的)

您可以通过在列表中包装对象来添加多个过滤器。


这将返回长度在30到60分钟之间的所有影片。 默认情况下,列表中的所有运算符都被认为是用“与”运算符分隔的。 所有条件都必须适用于通过筛选的行。 要改变这种情况,可以使用显式的或语句。


这将返回所有短于30分钟或长于1小时的影片。

默认情况下,加速以与数据库返回相同的顺序返回行。 但是,如果向表达式中添加过滤器,则返回的顺序是未定义的。 为了确保在前端很好地定义了顺序,因此,您可以向生成的后端发送一个已定义的顺序,告诉它如何对元素进行排序。 如果您使用加速数据存储来服务内存中的元素,那么它将使用内存中的索引来解析正确的顺序。

这里有一个例子,电影是按长度检索的。


要获得相反顺序的影片,您可以指定一个降序,如下所示:


您还可以向后端发送多个排序器来定义主订单、辅助订单等等。


该插件的最后一个特性是页面结果的能力,以避免向浏览器发送不必要的大对象。 这是默认启用的,这就是为什么当您查询后端时,您不会看到超过25个结果。 要跳过许多结果(不是页面),可以指定参数。


这将跳过前25个元素,从第26个开始。 您可以通过添加参数来更改默认页面大小。


这也从第26个元素开始,但是只返回5个元素,而不是25个。

在本文中,您已经了解了使用Speedment、Spring和插件来启动和运行一个完整的REST应用编程接口是多么容易。

猜你喜欢

转载自blog.csdn.net/weixin_49470452/article/details/107506911
今日推荐