在几分钟内为您的数据库创建一个管理面板全栈应用程序。
如果你将信息存储在关系数据库中,我敢打赌你肯定希望有一个方便的应用程序来查看或编辑这些数据。然后,据我猜测,你开始开发这个应用程序,甚至已经开发出来了。
无论如何,如果您曾经创建过用于处理数据库的应用程序,您就会知道这并不容易。
你必须选择一个技术栈。然后,你必须设计应用程序的架构,以确保安全性、速度和数据的准确性等。
幸运的是,已经有许多框架和库可以用作全栈应用程序的构建块。
但是,编写和调试代码仍然需要花费大量时间,即使你是一位非常有经验的软件工程师。
因此,我们决定创建一个工具,使用这些“块”为您的数据库生成应用程序代码。我们希望生成的源代码开箱即用。即使无法使用,您也可以将其用作您自己的应用程序的种子。
我们做到了!来认识一下IKODIX,一个用于全栈应用程序的在线源代码生成器。
IKODIX 不需要访问您的数据库即可生成代码。它采用声明式方法。
我不想对 IKODIX 进行冗长乏味的描述——我们直接开始创建一个小应用程序吧。这应该不会超过 50-60 分钟。
即使您已经有一些可用的测试数据库,我们也可以在 Docker 中运行 MySQL 数据库来加快该过程。
运行数据库
在本地主机上安装Docker Desktop。我们不仅需要它来运行数据库,还需要它来运行生成的应用程序。
- 创建一个
todo-db
目录,进入该目录并创建一个docker-compose.yml
文件 - 将以下代码复制到此文件中
services:
db:
image: mysql:8.0.19
volumes:
- ./data:/var/lib/mysql
- ./init.sql:/init.sql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root_password
- MYSQL_DATABASE=todo
- MYSQL_USER=myuser
- MYSQL_PASSWORD=mypassword
expose:
- 3306
ports:
- 3306:3306
command: --init-file /init.sql
- 创建一个
init.sql
文件并将以下代码复制到其中
CREATE DATABASE IF NOT EXISTS todo;
USE todo;
DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (
`id` bigint NOT NULL AUTO_INCREMENT,
`full_name` varchar(1000) NOT NULL,
PRIMARY KEY (`id`)
);
DROP TABLE IF EXISTS `task_status`;
CREATE TABLE `task_status` (
`id` bigint NOT NULL AUTO_INCREMENT,
`status_name` varchar(200) NOT NULL,
PRIMARY KEY (`id`)
);
DROP TABLE IF EXISTS `task`;
CREATE TABLE `task` (
`id` bigint NOT NULL AUTO_INCREMENT,
`description` varchar(5000) NOT NULL,
`to_date` date DEFAULT NULL,
`assignee_id` bigint DEFAULT NULL,
`status_id` bigint NOT NULL,
PRIMARY KEY (`id`),
KEY `task_employee_id_fk` (`assignee_id`),
KEY `task_task_status_id_fk` (`status_id`),
CONSTRAINT `task_employee_id_fk` FOREIGN KEY (`assignee_id`) REFERENCES `employee` (`id`),
CONSTRAINT `task_task_status_id_fk` FOREIGN KEY (`status_id`) REFERENCES `task_status` (`id`)
);
- 在目录内创建另一个
data
目录todo-db
- 在终端中运行命令:
docker-compose up -build
- 等到容器报告已准备就绪...
现在,您的计算机上已经有一个包含todo
数据库的 Docker 容器在运行。它包含 3 个表:employee
、task
、task_status
。
打开 IKODIX
我们可以开始在 IKODIX 中描述表格了。打开 IKODIX。转到“数据表”,然后按照如下说明添加包含列的表格。
员工表
- 添加
employee
表。默认情况下,它已经有一个强制Primary Key
列,其类型Long
和名称为id
。这对我们来说没问题,因为实际表employee
有一个名为 的主键列id
。这适用于我们数据库中的所有其他表。 - 添加
full_name
具有类型的列String
。
task_status表
- 添加
task_status
表格。 - 添加
status_name
类型为 的列String
。
任务表
- 添加
task
表格。 - 添加
description
类型的列String
。 - 添加类型
assignee_id
的列Long
。 - 将该列添加
status_id
为Long
。 - 添加
to_date
类型的列Date
。
一旦我们有了表格列表,我们就可以开始创建投影。
投影是来自一些关联表的数据。这些数据将在前端数据网格的单独页面上显示。您可以将其与编写用于从数据库中选择某些记录的 SQL 查询进行类比。
你可能已经猜到了,我们的数据库包含一些任务的信息。我们首先需要查看的是所有任务以及分配给这些任务的员工。
创建任务投影。
我们面前将会打开一个图表,我们需要在其中添加我们想要查看记录的表。
我们先添加task
表。第一个表是图中的根表,我们会将其他表链接到它。这与我们编写 SQL 查询的方式非常相似。
让我们添加task_status
表格。将status_id
表格中的列链接task
到表格id
中的列task_status
。
添加employee
表格。将assignee_id
表格中的列链接task
到表格id
中的列employee
。
让我们转到“视图”选项卡。在这里,我们应该将图表中的所有表列标记为Visible
我们希望在前端看到的列。
标记任务表中的description
和列。在网格列标题to_date
中为这些列设置合适的名称。
full_name
将表中的列employee
和status_name
中的列设置为可见task_status table
。并为其指定名称。
您可以重新排列数据网格中显示的列的顺序。
接下来,转到“创建”选项卡。在此选项卡中,我们配置用于为图表中的根表创建记录的表单。也就是说,该记录将仅在task
表中创建。
我们将字段标记description
为to_date
可见,并为它们命名并赋予相应的字段类型。
但除了这些字段之外,我们还有其他表的链接字段:assignee_id
和status_id
。让我们将它们标记为可见,命名它们,然后选择Select
类型。
一旦我们将它们标记为可见,我们就可以在“选择控件设置”部分中选择自定义下拉列表。我们可以从链接表中指定用于下拉列表中名称的列。
选择status_name
的列status_id
,然后full_name
选择 的列assignee_id
。
转到“更新”选项卡并执行与“创建”选项卡中相同的操作。
我们已经准备好了第一个投影。现在,IKODIX 将能够生成一个应用程序,其中将有一个页面,其中包含所有任务及其分配的员工。并且我们将能够通过输入表单添加任务。
但是我们没有一个页面和输入表单来将员工添加到列表中。此外,也没有用于输入工作状态的页面和表单。
这很容易解决。为员工和状态创建两个投影:Employees和Statuses。在每个投影上分别添加一个表:employee
和task_status
。
如果您尝试自己在每个投影的“视图”、“创建”和“更新”选项卡中配置数据网格和表单,可能会更好。
当你完成新投影中的所有设置后,我们就可以开始生成应用程序的源代码。
生成源代码
但还有一件事还没完成——我们需要选择数据库类型 MySQL。让我们进入“系统设置”部分,设置我们想要的数据库类型。
单击“下载源代码”按钮并将应用程序命名为“ToDo Admin”之类的名称。
将档案保存到本地主机的空todo-app
目录中。在此目录中解压档案。
现在我们可以开始使用我们的应用程序了。我们不需要安装任何额外的东西来启动应用程序。
打开README.txt
文件并仔细阅读其中的内容。
根据手册,运行应用程序有两种模式:demo和dev。
演示是指构建并运行一个可供使用的应用程序。
Dev是指应用程序启动进行开发。前端的热加载 (Hot Reloading)就是在这种模式下工作的。
让我们以演示模式运行该应用程序,看看它是如何开箱即用的。
开始之前,我们需要配置数据库访问权限。这可以在.env
文件中完成。找到变量jdbc:mysql://host.docker.internal:3306/tododataSource.url
并将其值替换。然后将用户名 ( ) 替换为myuser,将密码 ( ) 替换为mypassword。保存文件。dataSource.username
dataSource.password
运行应用程序
两个 Docker 容器用于运行应用程序的所有部分。但我们只需运行命令app.sh demo
(或app.cmd demo
Windows 系统下的命令),然后等待应用程序启动即可。
由于应用程序的容器在后台运行,我们需要跟踪它们。让我们在不同的终端中运行这两个app.sh client-log
命令app.sh service-log
。
一旦我们看到一切正常运转,我们就可以使用地址http://localhost:3030打开浏览器
系统中默认有一个具有管理员权限的用户。因此,我们将以他的账户登录,用户名:administrator,密码:administrator_password。
我们的表中没有记录,所以让我们尝试获取新员工、新状态并创建任务。
尽管该应用程序开箱即用,但我们需要更改左上角的公司名称。
为了做到这一点,让我们在开发模式下运行该应用程序。只需运行命令即可app.sh dev
。
让我们等待所有 Docker 容器启动。为了确保它们已准备就绪,请在不同的终端中使用以下命令:app.sh client-log
和。app.sh service-log
准备好后,让我们打开浏览器,输入地址http://localhost:3030
WorkspacePage.tsx
现在,在目录中的前端代码中找到该文件to-do-admin-client/src/features/layout
,并将文本“公司名称”替换为我们需要的值:“ToDo Admin”。
保存文件中的更改...并在浏览器中查看页面。值应该会自动更改。
制作前端的 Docker 容器是为了实现热重载。
完成最终修改后,您需要再次运行app.sh demo
—— 然后应用程序的各个部分将被构建以供生产使用。您可以在to-do-admin-client/build
和 中找到发行版to-do-admin-service/target
。
如果您要扩展应用程序的功能,请首先阅读和目录
README.md
中包含代码结构详细描述的文件。这将帮助您轻松理解代码。to-do-admin-client
to-do-admin-service
希望您不会太累,并且享受使用IKODIX构建应用程序的乐趣。无论如何,这比您自己开发此类应用程序要快得多,也舒服得多。
如果您有任何意见或问题,请随时在我们的论坛上发布:IKODIX 论坛
还可以通过我们的 Twitter 帐户关注 IKODIX 的新品发布:@kodix