需求
先说一下需求:实现用户自定义的查询,用户可以自定义要查询的列、自定义条件条件、自定义排序。除了查询使用外,还可以使用于各个需要根据条件进行约束的业务,如权限;
本设计和实现,很大部分是通过数据库和存储过程进行,界面只是让用户选择数据列和设置条件,并把这些内容保存在数据库中,查询是通过存储过程拼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语句时表别名 |
这三个表的数据,根据数据库中系统表的内容进行初始化填写。并且开发了一个界面,进行一些业务上的设置,主要是设置表中“用户控制业务操作”的那些字段;