代码生成使用指南
从零配出一套后台系统:先建工程和数据表,再配页面、挂菜单,最后生成代码下载下来。零基础也能照着做,不需要懂编程。
这个功能做的事:你把想要的系统描述一遍,系统按描述生成一整套代码给你下载。配置的过程,就是把你脑子里的系统填进表单。
下面按难度分三篇,标着「可选」的步骤以后再做也行。建议先做完基础篇,跑通一套能用的系统;进阶篇和高级篇等需要时再回头看。
一次「生成一套系统」的全部配置都在一个工程里,最后生成一套代码。可以有多个。
系统要管的一类数据。一行是一条记录,一列是一个属性,像一张 Excel 表。
用户看到的界面。一张表通常配一个列表页,能查、能改、能删。
左边的导航栏。页面配好后要挂到菜单上才点得到,新手最容易漏这一步。
把全部配置翻译成代码并打包。生成一次拿到一个压缩包,解压就能跑。
小提示
每一步都写了点哪里、填什么、做完看到什么,配着界面截图。中途停下也没关系,回工程详情页打开这份指南,能看到哪些已经做完。
先跑通一套能用的系统
这一篇做完,你就有了一个能查、能改、能删,还能下载代码的后台。第一次用就先做这一篇。
建一个工程
给这套系统起个名字、选个样子,后面的配置都装在这里面。
- 1点这里新建一个工程
打开左侧菜单的「工程管理」,点右上角「新增工程」。第一次进来列表是空的,也是从这里开始。
- 1「工程名」填英文小写字母和短横线,例如 merchant-admin。
- 2「描述」写清这个系统管什么,例如「商家入驻与信息管理」。
- 3「服务端」「前端」保持默认;「主题色」和「布局」决定生成出来的样子,拿不准就用默认。
- 1工程名:英文小写,会变成代码包名
- 2描述:写给以后自己看的一句话
做完你应该看到
详情页顶部出现你填的工程名,下面有「表 / 页面 / 菜单 / 权限」几个页签,现在还都是空的。
选好数据库连接
可选让生成的系统默认就连上你的库,跑起来时不用再改配置。
「数据库连接」是平台替你记住的一套库地址与账号。工程绑上它,生成的系统默认就用这套连接。
- 1库地址、账号、密码都在这里登记
- 1进左侧「数据库连接」菜单,点「新增连接」。
- 2填连接名、主机地址、端口、数据库名、用户名、密码,保存。
- 3回工程详情页,在「工程设置」里点开「数据库连接」那一行,选中刚建的连接。
- 4重新生成一次,生成物里就带着这套连接了。
- 1工程设置这一行选中要用的连接
做完你应该看到
生成的系统启动时直接连上这个库,第 7 步里不用再改配置文件。
小提示
先跳过也行:不绑连接时生成物里是占位配置,第 7 步教你填。手上没库可点「租用数据库」开一个;自建连接平台不做连通性测试。
把数据建成表
告诉系统你要管哪几类数据、每类数据有哪些内容。
在「表」页签点「新增表」。这里用一句建表语句来描述数据,不会写就抄下面这段,只改名字。
CREATE TABLE merchant ( id BIGINT NOT NULL COMMENT '主键', name VARCHAR(50) NOT NULL COMMENT '商家名称', phone VARCHAR(20) COMMENT '联系电话', status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1=启用 0=禁用', create_time DATETIME COMMENT '创建时间', PRIMARY KEY (id) );
- 1把建表语句粘贴到这里
- 2表名会自动读出来,不用手填
- 1把语句粘进「建表 SQL 语句」,表名会自动读出来,不用手填。
- 2「描述」填中文,例如「商家」,它会显示在界面上。
- 3点「确定」保存。想逐列手填,可以切到「字段方式」。
- 1每列的说明会成为界面上的表头和标签
注意
每列后面的中文注释一定要写。它会变成列表的表头和表单的标签,不写界面上就会露出英文。
配第一个页面
配出一个能查、能改、能删的列表页。
切到「页面」页签,点「新增页面」。这里要说清三件事:哪一类页面、用哪种样式、数据从哪张表来。
- 1「页面名称」填中文,例如「商家管理」,它会显示在页面标题上。
- 2「页面类型」选「后台管理页面」。
- 3「页面模板」选「CRUD 列表」,就是一进来看到一张表格。
- 4「数据来源」选刚建好的表;编码与路由会自动填好,对照一眼即可(如 /admin/merchant)。
- 1选「后台管理页面」
- 2选「CRUD 列表」:一进来看到一张表格
- 3选上一步建好的那张表
保存后点这一行的「配置」,会出现四个页签——列表显示哪些列、能搜什么、能填什么、有哪些按钮,都在这里定。
- 1勾选列表里要显示哪些列
做完你应该看到
点详情页的「预览」,能看到一张带数据、带搜索框、带操作按钮的列表。
把页面挂到菜单上
页面配好不会自己出现在导航里,要挂到菜单上才点得到。
菜单就是后台左边的导航栏。「目录」是可以展开的分组,例如「商家中心」;「菜单」是最后点进去的那个页面。
- 1页面配好了,还要在这里挂一次
- 1点「新增菜单」,「菜单名称」填中文,例如「商家管理」。
- 2「类型」选「菜单」,「关联页面」选刚配好的页面。
- 3选一个图标,填「排序」(数字越小越靠前),保存。
- 4想让几个页面归成一组,就先建一个「目录」,再把它设成这些页面的「上级菜单」。
- 1菜单名字,用户看到的就是它
- 2选前面配好的页面,菜单才点得开
做完你应该看到
进预览后左侧出现这个菜单,点它能打开对应页面。
预览、生成、下载
把配置变成一套能跑起来的代码,打包带走。
生成前先在预览里把页面点一遍。预览用的是示例数据,界面和配色跟生成出来的一致。
- 1在详情页点右上角「预览」,确认菜单、列表、表单都对。
- 2回到详情页点「生成代码」,等它跑完。
- 3在生成记录里点「下载」拿到压缩包,解压后按包里的说明启动。
- 1下载最近一次生成的代码包
做完你应该看到
生成完成后详情页顶部出现「代码已生成」和下载按钮,生成记录里也多了一条。
注意
下载链接一小时后失效。要重新下载,去生成记录里点同一行的「下载」,不用重新生成。
把生成的系统跑起来
把压缩包变成能在浏览器里打开、能登录的系统。
解压后会看到两个目录:backend 是后端,frontend-react 是前端。你只需要准备一个空的 MySQL 数据库。
第 2 步绑过数据库连接的话,直接启动即可,连接已经在里面了。没绑的话,打开 backend/src/main/resources/application.yml 改数据源。
# backend/src/main/resources/application.yml
spring:
datasource:
# 把 127.0.0.1:3306/your_database 换成你的地址和库名
url: jdbc:mysql://127.0.0.1:3306/your_database?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8
username: your_username # 换成数据库账号
password: your_password # 换成数据库密码sh mvnw -DskipTests package java -jar backend/target/backend-0.0.1-SNAPSHOT.jar
cd frontend-react npm install npm run dev
- 1准备一个空的 MySQL 库(不用建表,后端启动时会自己建好),记下地址、库名、账号、密码。
- 2绑过连接就直接启动;没绑的话按上面第一段改 application.yml。
- 3执行第二段启动后端,等到日志出现「数据库结构与数据已重建」。
- 4另开一个终端执行第三段,启动前端。
- 5浏览器打开终端里打印的地址(默认 3000,被占用会换成 3001),用 admin / 888888 登录。
- 1默认账号 admin,密码 888888
做完你应该看到
登录后能看到左侧菜单和你配的页面,列表里显示的是数据库里的真实数据。
注意
后端端口在 application.yml 的 server.port(默认 8088)。改它的话,前端的后端地址也要跟着改,两边一致才通。
让它更像一个真的后台
基础篇跑通之后再来看:两张表怎么挂钩、一页怎么同时看两张表、谁能登录、谁能看到哪些菜单。
配一页同时看两张表
让列表直接显示另一张表的中文内容,而不是一串编号。
举个例子:商品表里存的是「所属商家」的编号。想在商品列表里直接看到商家名称,就把数据来源选成「联表」,把商家的字段取过来。
- 1先在「表」页签里建好两张表,其中一张留一列存放对方的编号,例如商品的「所属商家」。
- 2新增页面,「页面模板」选「CRUD 列表」,「数据来源类型」选「联表」。
- 3「选择表」选主表,例如商品。
- 4在「数据来源配置」里选要连的另一张表和两边对应的字段,并勾上想显示的字段,例如商家名称。
- 5保存后点「配置」,在「展示字段」里给带过来的字段写个中文表头。
- 1这里选「联表」
- 2挑要连的表和字段,勾上想显示的
- 1带过来的商家名称在这里写中文表头
做完你应该看到
预览里商品列表直接显示所属商家的名称,而不是编号。
小提示
两张表都要先在「表」页签里建好,否则这里的下拉里选不出东西。
先告诉系统账号和身份在哪里
可选登录与分权都按这里选的表和字段生成,所以要在配登录页之前做。
在「权限」页签回答三件事:账号存在哪张表、哪一列表示身份、系统里有哪几种身份。之后再回「菜单」页签逐条指定谁能看到它。
- 1哪一列表示身份
- 2系统里有哪几种身份
- 1在「权限」页签选「用户表」,再选「身份字段」「用户名字段」「密码字段」。
- 2在「角色列表」里列出系统里的身份,例如「管理员」和「商家」。
- 3能看到全部菜单的身份,勾上「看全部菜单」。
- 4回「菜单」页签,逐条在「可见角色」里勾上谁能看到它,保存。
做完你应该看到
配好之后下一步的登录页才生成得出来;预览里切换身份,左侧菜单也会跟着变。
注意
身份字段最省心的是文本列,例如 user_type VARCHAR(20),取值写 admin、merchant 这类文字。用数字列也行,但取值要填数字(1、2)。
注意
登录后一片空白、一个菜单都没有,多半是这个身份在菜单的「可见角色」里一个都没勾。
加登录页和注册页
可选给系统加账号入口,并决定登录后进哪个页面。
做法和前面一样,只是模板选得不一样,数据来源要选存账号的那张表(有用户名和密码的那张)。
- 1先确认上一步的「权限」页签已经配好:账号表、身份字段、用户名与密码字段。
- 2新增页面,「页面类型」选「前台页面」,「页面模板」选「登录页」,「数据来源」选存账号的那张表。
- 3在「登录跳转」里按身份配规则,例如管理员进 /dashboard,商家进 /merchant。
- 4再新增一个页面,模板选「注册页」,在「表单字段」里配用户名、密码、确认密码——注册页收哪些字段,就以这一页的配置为准。
- 1按身份字段的值决定登录后进哪个页面
做完你应该看到
生成出来的系统会先打开登录页;不同账号登录后,按你配的规则进到不同的首页。
注意
跳转目标要以 / 开头,例如 /dashboard。写成完整网址或漏了斜杠,这条规则不会生效。
按需再做的进阶配置
前三种都是「写一句查询」做出普通列表做不到的页面,写入规则配的是「写一张表时连带改另一张表」。按需挑一节看。
用自定义查询配列表
可选只挑你想要的那些数据,还能按你指定的顺序排。
普通列表会把一张表的数据全部列出来。写一句查询,就能只挑符合条件的,例如「只列上架的商品,按价格从高到低」。
SELECT id, name, price, stock FROM goods WHERE status = 1 ORDER BY price DESC -- 对应的字段列表就填:id, name, price, stock
- 1新增页面,「页面模板」选「CRUD 列表」或「前台列表」。
- 2「数据来源类型」选「自定义SQL」,把上面的查询粘进去。
- 3把查询里 SELECT 后面那串列名,原样填进字段列表。
- 4保存后点「配置」,勾选要显示的列。
- 1填查询语句,并把返回的字段名填进来
做完你应该看到
预览里出现按你的查询筛出来、排好序的列表。
注意
字段名要和查询里写的一致。查询里是 name,字段列表就不能填「商品名称」,否则页面显示不出内容。
配统计图表
可选把数据画成图,一眼看出多少、趋势和占比。
图表也是页面,模板选「统计图表」。它的数据固定用一句查询,写一句按某个字段分组统计的即可。
SELECT status, COUNT(*) AS cnt FROM merchant GROUP BY status -- 维度填 status,指标填 cnt(字段列表填:status, cnt)
- 1新增页面,「页面模板」选「统计图表」。
- 2把上面的查询粘进「数据来源配置」,字段列表填 status, cnt。
- 3「图表类型」:比大小用柱状图,看趋势用折线图,看占比用饼图。
- 4「维度」填分组字段 status,「指标」填 cnt,保存后下面会出现预览。
- 1比较大小用柱状图,看趋势用折线图,看占比用饼图
做完你应该看到
预览里出现一张按维度分组的图,鼠标移上去能看到具体数值。
小提示
维度挑取值少的字段,例如状态。用电话这类几乎不重复的字段,图会碎得看不出东西。
配数据看板
可选把最关心的几个数字摆在一页,进系统第一眼就看到。
看板也是一页,里面能摆好几张卡片,每张卡片显示一个数字或一张小图。
-- 数字卡:统计总数,字段填 total,取值字段填 total SELECT COUNT(*) AS total FROM merchant -- 图表卡:按状态分组,字段填 status, cnt,维度填 status,指标填 cnt SELECT status, COUNT(*) AS cnt FROM merchant GROUP BY status
- 1新增页面,「页面模板」选「数据看板」。
- 2在「卡片」里添加一张数字卡,把上面的统计查询粘进去,取值字段填 total。
- 3再加一张图表卡,粘分组查询,选好维度和指标。
- 4调整卡片顺序,把最重要的放在最前面。
- 1每张卡片一句统计查询
做完你应该看到
预览里出现一排卡片,每张显示一个数字或一张小图。
小提示
卡片控制在 4 到 8 张最舒服,太多第一屏放不下,反而看不清重点。
配写入规则
可选入库加、出库减:写一张表时连带改另一张表。
比如商品下架时把库存清零;入库加库存、出库扣库存,都是这里配的连带动作。
- 1点「添加规则」,选「当这张表被写入」和写入时机。
- 2写触发条件:不填就是每次写入都执行。
- 3配动作:改哪张表的哪个字段、按什么对应上(如商品的库存)。
- 4保存后重新生成一次代码,规则才生效。
- 1每条规则一句话说清它做什么
- 2规则都在这里加
- 1先选哪张表被写入时触发
- 2再写清什么情况下才执行
- 3两边怎么对应上,决定改哪一条记录
- 1改哪个字段,比如商品的库存
- 2没匹配到记录时是报错还是跳过
做完你应该看到
重新生成并跑起来后,做一次触发写入,另一张表的字段跟着变了。
注意
动作里「按什么对应上」必须填:不填会把整张库存表的记录都改掉。
小提示
想要「库存不够就不让出库」,在动作里勾上「减到负数就拦住」。
生成前提示有东西没配好,怎么办?
系统会先检查有没有指向已删除内容的地方,例如某个菜单挂在一个已经被删掉的页面上。提示里会写清是哪一个,改掉再生成即可。
预览里没有数据,是不是配错了?
不是。预览用的是示例数据,用来确认界面结构。想看真实数据,要把代码生成出来跑起来。
菜单配了却看不到。
先看这一行的「状态」是不是启用了;再看它的「上级菜单」是不是被折叠;最后看「可见角色」里有没有勾上当前身份。
改了配置,之前生成的代码会跟着变吗?
不会。已生成的压缩包是当时配置的快照,想让改动生效要重新生成一次。
生成了代码,但后端起不来,报连不上数据库。
先看 application.yml 里的数据库三项还是不是示例值(your_database 这种)。是的话说明没绑数据库连接,在那几行填上真实值再启动即可。
页面能打开,但登录没反应。
多半是后端没起来。前端只负责界面,登录要请求后端;确认后端日志里有「Started ... in x seconds」,并且前端的后端地址与后端端口一致(都默认 8088)。
为什么选不了某些服务端或前端技术?
目前只支持一种组合,所以能选的就是这一组;历史配置里留下的取值仍会正常显示,但不建议使用。