feat(config): 扩展数据类型映射与数据库字段备注提取功能

- 在 ColumnDataType 中新增对 PostgreSQL 和 Oracle 数据类型的支持
- 更新 Db2JSON 方法,优化对达梦数据库表和列信息的查询逻辑
- 增强字段备注解析,支持从备注中提取提示信息并清理标签
- 更新文档,详细说明字段备注格式及前端提示的展示效果
This commit is contained in:
2026-03-23 16:48:56 +08:00
parent 82cf5a14d2
commit 34365fdaa0
11 changed files with 626 additions and 40 deletions
+10 -3
View File
@@ -148,12 +148,15 @@ func main() {
支持从数据库字段备注中提取信息:
```sql
-- 字段备注格式: 标签名:选项1-名称1,选项2-名称2 {提示信息}
-- 字段备注格式: 标签名(提示信息):选项1-名称1,选项2-名称2
-- 括号支持三种写法:()、()、{}
-- 例如:
status TINYINT COMMENT '状态:0-禁用,1-启用 {用户账号状态}'
status TINYINT COMMENT '状态(用户账号状态):0-禁用,1-启用'
parent_id INT COMMENT '父级ID(顶级为NULL'
phone VARCHAR(20) COMMENT '手机号(请输入11位手机号)'
```
生成的配置:
生成的配置(以第一行为例)
```json
{
@@ -168,6 +171,10 @@ status TINYINT COMMENT '状态:0-禁用,1-启用 {用户账号状态}'
}
```
`ps` 字段在前端的展示效果:
- 编辑/新增页面:输入框右侧灰色小字提示
- 表格/详情页面:鼠标悬停字段名时气泡提示
---
## 自定义规则
+23 -11
View File
@@ -229,15 +229,17 @@ SQLite 不支持表备注,代码生成器会使用表名作为默认显示名
字段注释支持以下格式组合:
```
显示名称:选项值 附加备注{前端提示}
显示名称(前端提示):选项值 附加备注
显示名称(前端提示):选项值 附加备注
显示名称{前端提示}:选项值 附加备注
```
| 部分 | 分隔符 | 用途 |
|------|--------|------|
| 显示名称 | 无 | 前端表单/列表的字段标签 |
| 前端提示 | `()``()``{}` | 存储到 `ps` 字段,前端用于字段说明提示(编辑页输入框右侧、表格/详情鼠标悬停气泡) |
| 选项值 | `:` 冒号 | select 类型的下拉选项(格式:`值-名称,值-名称` |
| 附加备注 | 空格 | 仅在数据库中查看,不传递给前端 |
| 前端提示 | `{}` | 存储到 `ps` 字段,用于前端显示提示文字 |
### 选择类型字段
@@ -268,28 +270,38 @@ SQLite 不支持表备注,代码生成器会使用表名作为默认显示名
`amount` decimal(10,2) COMMENT '金额 单位为元,精确到分'
```
### 前端提示({}内)
### 前端提示(括号内)
`{}` 中的内容存储到 `ps` 字段,前端可用于显示输入提示:
`()``()``{}` 中的内容存储到 `ps` 字段,前端展示为字段说明提示。推荐使用 `()``()``{}` 为兼容旧格式保留。
```sql
`phone` varchar(20) COMMENT '手机号{请输入11位手机号}'
`parent_id` int(11) COMMENT '父级ID(顶级为NULL'
`status` int(2) COMMENT '状态(当前审核状态):0-待审,1-通过,2-驳回'
`phone` varchar(20) COMMENT '手机号(请输入11位手机号)'
`email` varchar(100) COMMENT '邮箱{格式:xxx@xxx.com}'
`content` text COMMENT '内容{支持HTML格式}'
```
前端展示效果:
- **编辑/新增页面**:输入框右侧显示灰色小字提示
- **表格列表/详情页面**:鼠标悬停字段名时显示气泡提示
### 组合使用
```sql
-- 完整格式示例
`status` int(2) DEFAULT '0' COMMENT '状态:0-待审核,1-已通过,2-已拒绝 业务状态流转字段{选择当前审核状态}'
-- 推荐写法:使用圆括号
`status` int(2) DEFAULT '0' COMMENT '状态(选择当前审核状态):0-待审核,1-已通过,2-已拒绝'
`parent_id` int(11) DEFAULT NULL COMMENT '父级ID(顶级为NULL'
-- 兼容写法:使用花括号
`status` int(2) DEFAULT '0' COMMENT '状态{选择当前审核状态}:0-待审核,1-已通过,2-已拒绝'
```
解析结果:
解析结果(以第一行为例)
- `label` = "状态"
- `options` = [{name:"待审核", value:"0"}, {name:"已通过", value:"1"}, {name:"已拒绝", value:"2"}]
- `ps` = "选择当前审核状态"
- 空格后的"业务状态流转字段"不会传递给前端
- `options` = [{name:"待审核", value:"0"}, {name:"已通过", value:"1"}, {name:"已拒绝", value:"2"}]
三种括号 `()``()``{}` 功能相同,优先匹配顺序为:`()` > `()` > `{}`,同一注释中只取第一个匹配到的括号对。
### SQLite 字段备注