需求
先說一下需求:實現用戶自定義的查詢,用戶可以自定義要查詢的列、自定義條件條件、自定義排序。除了查詢使用外,還可以使用於各個需要根據條件進行約束的業務,如權限;
本設計和實現,很大部分是通過數據庫和存儲過程進行,界面只是讓用戶選擇數據列和設置條件,並把這些內容保存在數據庫中,查詢是通過存儲過程拼SQL語句完成,並把結果集返回。
設計結構
基礎登記表-->查詢設置表-->存儲過程運行
表設計
首先定義基礎登記表,基礎登記表分為三個部分:表登記、列登記、表間關系登記;
表登記的數據表包含如下字段:
字段描述 |
字段名 |
類型 |
說明 |
登記表自增長關鍵字 |
id_table |
int |
自增長 |
基礎表 |
tablereg_name |
varchar(60) |
數據庫中名稱 |
基礎表中文名 |
tablereg_cnname |
varchar(60) |
業務上顯示的名稱 |
關鍵字段名 |
prk_name |
varchar(60) |
關鍵字字段 |
關鍵字段中文名 |
prk_cnname |
varchar(60) |
關鍵字中文名稱 |
審核后是否可以刪除 |
checkdel_flag |
char(1) |
用戶控制業務操作 |
使用后是否可以刪除 |
useddel_flag |
char(1) |
用戶控制業務操作 |
控制操作權限 |
belong_type |
char(1) |
用戶控制業務操作 |
用戶可配置 |
config_flag |
char(1) |
用戶控制業務操作 |
業務主表標志 |
mainbusiness_flag |
char(1) |
用戶控制業務操作 |
是否需要審核 |
check_flag |
char(1) |
用戶控制業務操作 |
需要定義審批流程 |
checkflow_type |
char(1) |
用戶控制業務操作 |
審批流程ID |
id_workflow |
int |
用戶控制業務操作 |
數據庫名稱 |
schema_name |
varchar(100) |
用戶控制業務操作 |
消息通知標志 |
message_flag |
char(1) |
用戶控制業務操作 |
是否權限控制 |
permission_flag |
char(1) |
用戶控制業務操作 |
列登記的數據表包含如下字段:
字段描述 |
字段名 |
類型 |
說明 |
自增長關鍵字 |
id_column |
int |
自增長關鍵字 |
登記表關鍵字 |
id_table |
int |
歸屬表的ID |
順序號 |
serial_num |
int |
標示列的順序 |
字段表 |
column_name |
varchar(60) |
|
字段中文名 |
column_cnname |
varchar(60) |
|
數據類型 |
data_type |
char(1) |
1 數字;2 字符;3 時間; |
原始數據類型 |
data_type_original |
varchar(20) |
記錄數據庫中的數據類型 如 int datetime 等 |
原始列數據類型 |
column_type_original |
varchar(30) |
|
是否權限控制 |
permission_flag |
char(1) |
業務使用 |
下拉列表ID |
id_list |
int |
標識下拉框的數據源,可以是枚舉或是數據源 |
表間關系登記表
字段描述 |
字段名 |
類型 |
說明 |
登記表關系ID關鍵字 |
id_tabrela |
int |
自增長 |
主表 |
id_table |
int |
表的ID |
關聯表 |
id_table_rela |
int |
表的ID |
主表字段名 |
column_name |
varchar(100) |
主表的關鍵字 |
主表字段中文名 |
column_cnname |
varchar(100) |
主表的關鍵字中文名 |
關聯表字段 |
column_name_rela |
varchar(100) |
關聯表的關鍵字,一般是外鍵 |
關聯表別名 |
relatable_name |
varchar(100) |
關聯名別名,顯示用 |
關聯表查詢別名 |
tableas_name |
varchar(100) |
拼SQL語句時表別名 |
這三個表的數據,根據數據庫中系統表的內容進行初始化填寫。並且開發了一個界面,進行一些業務上的設置,主要是設置表中“用戶控制業務操作”的那些字段;
后續內容請看第二部分;