後設資料管理—動態表單設計器在crudapi系統中完整實現

yifanwu發表於2021-09-09

表單設計

在前面文章中,我們透過一系列案例介紹了表單設計的一些基本功能,表單設計起到非常重要作用,也是crudapi核心,所以本文會詳細介紹表單設計中一些其它功能。

概要

表單欄位column屬性

列英文名稱 描述
name 英文名稱
caption 中文名稱
autoIncrement 是否自增長
description 描述
displayOrder 序號,UI中顯示的順序
dataType 資料型別,比如字串、整數等
seqId 序列號ID,用於設定流水號
indexName 索引名稱
indexStorage 索引儲存, 支援BTREE、HASH
indexType 索引型別,支援PRIMARY, UNIQUE, INDEX, FULLTEXT
length 長度
precision 精密度、精確(精度),表示該欄位的有效數字位數
scale 刻度、數值範圍,表示該欄位的小數位數
nullable 是否可為空
unsigned 是否無符號
insertable 是否可插入
queryable 是否可查詢
systemable 是否系統欄位
updatable 是否可修改
createdDate 建立時間
lastModifiedDate 修改時間

以上屬性不是所有的都同時有效,比如unsigned只有在dataType為數字的時候才有效,為字串的時候會忽略,其它情況的類似。

系統欄位

圖片描述
建立表單的時候會預設新增5個系統欄位,分別是編號id,名稱name,全文索引fullTextBody,建立時間 createdDate和修改時間lastModifiedDate,以customer為例,系統欄位json內容如下:

[{
    "autoIncrement": true,
    "caption": "編號",
    "createdDate": 1613181300985,
    "dataType": "BIGINT",
    "description": "主鍵",
    "displayOrder": 0,
    "id": 253,
    "indexType": "PRIMARY",
    "insertable": false,
    "lastModifiedDate": 1613182114133,
    "length": 20,
    "name": "id",
    "nullable": false,
    "queryable": false,
    "systemable": true,
    "unsigned": true,
    "updatable": false
}, {
    "autoIncrement": false,
    "caption": "名稱",
    "createdDate": 1613181300985,
    "dataType": "VARCHAR",
    "description": "名稱",
    "displayOrder": 1,
    "id": 254,
    "insertable": true,
    "lastModifiedDate": 1613182114133,
    "length": 200,
    "name": "name",
    "nullable": false,
    "queryable": true,
    "systemable": true,
    "unsigned": false,
    "updatable": true
}, {
    "autoIncrement": false,
    "caption": "全文索引",
    "createdDate": 1613181300985,
    "dataType": "TEXT",
    "description": "全文索引",
    "displayOrder": 2,
    "id": 255,
    "indexName": "ft_fulltext_body",
    "indexType": "FULLTEXT",
    "insertable": false,
    "lastModifiedDate": 1613182114133,
    "name": "fullTextBody",
    "nullable": true,
    "queryable": false,
    "systemable": true,
    "unsigned": false,
    "updatable": false
}, {
    "autoIncrement": false,
    "caption": "建立時間",
    "createdDate": 1613181300985,
    "dataType": "DATETIME",
    "description": "建立時間",
    "displayOrder": 3,
    "id": 256,
    "insertable": false,
    "lastModifiedDate": 1613182114133,
    "name": "createdDate",
    "nullable": false,
    "queryable": false,
    "systemable": true,
    "unsigned": false,
    "updatable": false
}]

唯一性索引

索引型別包括主鍵、全文、普通、唯一,全文索引之前已經介紹過了,普通索引主要是為了提高查詢效率,這裡主要介紹一下唯一性索引
圖片描述
客戶表mobile手機欄位建立唯一性索引,表示手機號不允許重複

圖片描述
新增客戶時,錄入新增已經存在的手機號,提示重複錯誤,和期望的一致,唯一性索引可以防止資料重複。

聯合索引

如果索引只有一個欄位,在設定列屬性的時候直接設定。如果是多個欄位聯合索引,就需要單獨設定了。這裡可以建立普通或唯一兩種型別的聯合索引,透過下拉框選擇多個欄位。
圖片描述
比如給customer設定一個聯合索引,最終得到的索引功能和之前單個欄位索引類似。

附件

附件型別欄位支援儲存附件,主要是文件、圖片等

圖片描述
設定檔案file表的url連結欄位屬性為ATTACHMENT

圖片描述
錄入資料時候,附件欄位可以上傳檔案,如果是圖片可以預覽。

表單設計API

圖片描述
表單設計提供了API,如果預設提供的後臺管理UI不適合,可以二次開發,重新設計UI,透過API管理表單,API文件如下:

圖片描述
Postman查詢customer表單後設資料。

小結

本文介紹了表單設計完整功能,既可以透過UI配置實現,也可以透過API進行二次開發。

附crudapi簡介

本系統屬於產品級的零程式碼平臺,不同於自動程式碼生成器,不需要生成Controller、Service、Repository、Entity等業務程式碼,程式執行起來就可以使用,真正0程式碼,可以覆蓋基本的和業務無關的CRUD RESTful API。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2157/viewspace-2796656/,如需轉載,請註明出處,否則將追究法律責任。

相關文章