CN112035510B - 一种信息系统复杂数据查询方法及系统 - Google Patents
一种信息系统复杂数据查询方法及系统 Download PDFInfo
- Publication number
- CN112035510B CN112035510B CN202010884368.4A CN202010884368A CN112035510B CN 112035510 B CN112035510 B CN 112035510B CN 202010884368 A CN202010884368 A CN 202010884368A CN 112035510 B CN112035510 B CN 112035510B
- Authority
- CN
- China
- Prior art keywords
- query
- data query
- sql
- module
- attribute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 238000013507 mapping Methods 0.000 claims abstract description 56
- 238000003780 insertion Methods 0.000 claims abstract description 17
- 230000037431 insertion Effects 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims description 26
- 230000014509 gene expression Effects 0.000 claims description 19
- 239000012634 fragment Substances 0.000 claims description 6
- 238000012216 screening Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000001914 filtration Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种信息系统复杂数据查询方法及系统,其中系统包括服务端和前端,服务端包括业务数据库、数据访问中间件及其SQL映射配置文件、SQL查询语句解析模块、数据查询通用缓存模块、复杂数据查询配置文件、查询配置文件解析模块、查询约束规则动态插入模块;前端包括常规数据查询Form表单模块;复杂数据查询配置文件及查询配置文件解析模块,分别用于配置和解析复杂数据查询的条件要素、表单项属性、生成规则;查询约束规则动态插入模块,用于在系统加载时,根据配置形成的查询约束规则动态插入SQL映射配置文件。本发明能完成复杂数据查询,且不改变原业务逻辑,侵入性低,动态增强业务数据查询方案。
Description
技术领域
本发明涉及动态数据查询领域,尤其涉及一种信息系统复杂数据查询方法及系统。
背景技术
随着信息系统的发展,对客观数据的应用也越来越丰富,基于数据的分析和查询需求也变得越来越复杂。企业信息系统在建设项目或产品设计开发阶段,在业务功能上往往不能确定业务数据查询的要素及其条件约束,致使固化或预设的部分要素、条件查询在业务上线后并不能满足客户复杂数据查询的需求。另外信息系统的任何业务功能要定制增加复杂的、不确定的查询条件要素和表单界面,都带来代码的侵入性,定制化程度会很高,不利于系统模块化,系统维护管理复杂度和成本都会上升。
因此企业信息系统、决策分析等系统需要一种可定义表单、过滤条件的复杂数据查询,且不改变原业务逻辑,侵入性低,动态增强业务数据查询方案,以改进上述问题。
发明内容
本发明所要解决的技术问题在于,提供一种信息系统复杂数据查询方法及系统,能完成可定义表单、过滤条件的复杂数据查询,且不改变原业务逻辑,侵入性低,动态增强业务数据查询方案,有利于系统模块化、减低系统维护管理复杂度和成本。
为实现上述技术目的,本发明采用如下技术方案:
一种信息系统复杂数据查询系统,包括服务端和前端,所述服务端包括业务数据库、数据访问中间件及其SQL映射配置文件、SQL查询语句解析模块、数据查询通用缓存模块,前端包括常规数据查询Form表单模块;服务端还包括复杂数据查询配置文件、查询配置文件解析模块、查询约束规则动态插入模块;
所述复杂数据查询配置文件,用于配置复杂数据查询的条件要素、表单项属性、生成规则;
所述查询配置文件解析模块,用于解析复杂数据查询的条件要素、表单项属性、生成规则;
所述查询约束规则动态插入模块,用于在系统加载时,根据配置形成的查询约束规则动态插入SQL映射配置文件。
进一步的,前端还包括复杂数据查询表单生成脚本插件;用于根据复杂数据查询配置信息,动态生成复杂数据查询表单嵌入模块;
所述复杂数据查询表单嵌入模块,与常规数据查询Form表单模块构成组合数据查询模块,用于业务查询的要素及条件筛选。
进一步的,服务端还包括自助化表单定义模块,用于根据SQLMetadata元数据信息生成的表单项集合,通过配置或界面拖拽等方式自助化定义查询表单;其中,所述SQLMetadata元数据,由SQL查询语句解析模块对SQL查询语句进行语法解析并生成。
进一步的,所述复杂数据查询配置文件,配置规范的关键节点包括:根节点Selects、根节点的子节点Select、Select的子节点Column;其中,
Selects根节点,是定义了一个或多个数据查询功能的集合;
Select节点,是定义了单个数据查询功能的要素、约束规则的节点;
Column节点,是定义了单个动态表单项的属性、要素关系约束规则、查询约束规则的节点。
进一步的,所述Select节点包括ID属性、Mapper属性和Location属性;其中,
Select节点的ID属性,定义复杂数据查询的唯一标识,通过该标识可实现与组合数据查询的Form表单ID属性的绑定;
Select节点的Mapper属性,定义了某业务功能的数据查询操作对应的数据访问中间件的SQL映射配置文件的命名空间的标识名称;该SQL映射配置文件的标识的节点,配置有SQL映射查询的模板语句;通过该标识名称,可以获取某业务功能的数据查询操作的SQL映射查询的模板语句,或者查询约束规则动态插入模块将定义的查询约束规则添加至SQL映射查询的模板语句的某个位置等;
Select节点的Location属性,定义了查询约束规则动态插入模块将配置已定义的查询约束规则添加至数据访问中间件的本命名空间的SQL映射查询的模板语句中的所在位置。
进一步的,所述Column节点包括Type属性、Scope属性、URL属性、Cache属性、SQL属性、DATA属性、Relation属性、文本内容;其中,
Column节点的Type属性,定义了条件要素动态生成的表单项的表单输入组件类型;Type属性取值范围为Text、Radio、Checkbox、Date、Select,并分别依次对应普通输入框、单选框、多选、日期选择、下拉选择框等组件;
Column节点的Scope属性,定义了表单条件要素的数值表达式所匹配的范围,该属性取值范围为EQ、Like、GT、GTQ、LT、LTQ、UNEQ、IN、UNIN,并分别依次对应的数值表达式为精准匹配、模糊匹配、大于、大于等于、小于、小于等于、不等于、范围内、不在范围内;
Column节点的URL属性,定义了表单条件要素的数值来源类型,当表单项UI输入组件类型为一个多选、单选、下拉列表时,该表单项UI输入组件的数值内容为URL属性所定义的URL的HTTP远程链接返回的赋值内容;
Column节点的Cache属性,定义了表单条件要素的数值来源类型,当表单项UI输入组件类型为一个多选、单选、下拉列表时,Cache属性为缓存中的属性KEY值内容,该表单项UI输入组件的数值内容为通过访问系统缓存的所取到的赋值内容;
Column节点的SQL属性,定义了表单条件要素的数值来源类型,当表单项UI输入组件类型为一个多选、单选、下拉列表时,该表单项UI输入组件的数值内容为SQL属性所定义的SQL语句查询返回的赋值内容;
Column节点的DATA属性,定义了表单条件要素的数值来源类型,当表单项UI输入组件类型为一个多选、单选、下拉列表时,该表单项UI输入组件的数值内容为DATA属性所定义的结构化的数据返回的赋值内容,如JSON结构格式的赋值;
Column节点的Relation属性,定义了要素关系约束规则,约束了查询要素之间的关系,该属性取值范围为“与”、“或”、“非”;当Relation属性为空或未定义时,默认缺省支持“与”、“或”、“非”所有取值;
Column节点的文本内容,定义了查询约束规则片段,并定义了Column节点的Relation关系规则、Column节点的Scope条件表达式、Column节点的表单值对应的在约束规则片段填充的变量。
本发明还提供一种信息系统复杂数据查询方法,包括以下步骤:
步骤一,信息系统启动时,查询配置文件解析模块加载复杂数据查询配置文件,并进行解析,生成复杂数据查询配置数据并保存至数据查询通用缓存模块;
步骤二,扫描生成的复杂数据查询配置数据,获取所有Select节点的Location属性,将配置已定义的查询约束规则添加至配置定义的数据访问中间件的SQL映射配置文件的相应命名空间的SQL映射查询的模板语句中的所在位置,然后再启动数据访问中间件去加载已更新过的SQL映射配置文件,服务端准备就绪等待调用;
步骤三,当加载打开信息系统的前端业务查询功能时,根据常规数据查询模块Form表单的ID标识生成组合数据查询模块;
步骤四,组合数据查询模块提交查询请求至服务端,通过服务端调用数据访问中间件执行所对应的相应命名空间的SQL映射查询的模板语句,基于组合数据查询的表单请求参数进行SQL生成填充,由数据访问中间件提交数据库执行复杂数据查询操作,并返回数据查询结果。
进一步的,生成组合数据查询模块的方法为:
步骤a1,当加载打开信息系统的前端业务查询功能的同时,加载复杂数据查询表单生成脚本插件;
步骤a2,复杂数据查询表单生成脚本插件动态获取复杂数据查询配置数据,根据Select节点描述信息及子节点Column节点的描述信息,生成复杂数据查询表单嵌入模块的表单项;
步骤a3,通过页面DOM模型,找到常规数据查询模块Form表单的ID标识;
步骤a4,再操作DOM模型,将复杂数据查询表单嵌入模块的表单项与Form表单中的表单项,形成组合数据查询模块。
进一步的,生成组合数据查询模块的方法为:
步骤b1,当加载打开信息系统的前端业务查询功能时,数据查询From表单模块Form的ID通过异步通讯方式请求后端服务,获取该Form的ID与SQL映射配置文件的相应命名空间的SQL映射查询的模板语句;
步骤b2,取得的SQL映射查询的模板语句,该模板SQL生成哈希值,以哈希值为键进行缓存;通过SQL查询语句解析模块进行语法解析和SQLMetadata元数据信息生成;其中,解析模块将一个查询语句分成三部分:选择内容项SelectItem、数据来源项FromItem、条件选择表达式项集合Expression;
步骤b3,从SelectItem选择内容项中,进一步解析得到要展示的数据列ColumnMetedata元数据信息,从Expression中可以得到要过滤的Column Metedata;从FromItem寻找子Select查询语句,则递归子Select语句重复查询获得Column Metedata;
步骤b4,SQL查询语句解析模块进一步对查询SQL进行解析,直接得到查询SQL的相关Schema,Table,根据Schema和Table得到与SQL模板语句相关的Column Metedata元数据信息;
步骤b5,通过自助化表单定义模块,根据SQLMetadata元数据信息生成的表单项集合,通过配置或界面拖拽等方式自助化定义查询表单,形成组合数据查询模块。
进一步的,SQL映射配置文件的查询模板语句,可根据数据访问中间件SQL映射的SQL拼接语法,动态添加查询约束规则片段。
有益效果
本发明具有以下技术效果:
(1)系统服务端在原业务逻辑的基础上通过增设复杂数据查询配置文件、查询配置文件解析模块、查询约束规则动态插入模块,可以根据形成的查询约束规则动态插入SQL映射配置文件,便于前端页面加载以生成组合数据查询模块,可实现独立的子查询条件的界面,通过配置进行定义,且子查询条件与业务功能查询的字段和页显示无关,只影响查询条件的组合和过滤。
(2)组合数据查询模块,可根据需求按预定义查询表单自动生成,或者通过配置或界面拖拽等方式实现自助化定义查询表单生成,从而实现自动化或通用化的动态表单项生成机制。
(3)在系统加载时动态插入文件机制,并支持如嵌套的IF Test条件语法机制,可防止运行时参数传递拼接串带来的SQL注入问题。
(4)复杂数据查询模块与信息系统的具体业务功能分离,实现模块化和动态扩展,可做到应用中,运行动态调整查询条件,对使用系统无感知,无需重新发布。
综上所述,本发明通过配置或自动元数据识别及自助化定义等机制生成数据过滤条件要素,并动态生成表单页面,动态生成约束条件,在不侵入原业务逻辑情况下,动态影响查询数据集实现最终数据查询结果生成。有效改善了复杂数据查询应用在信息系统中固化预设条件查询要素的不足,且独立性模块化程度高,代码侵入性少,系统维护管理复杂度和成本低。
附图说明
图1为本发明实施例所述系统组成;
图2为本发明实施例所述方法的工作流程图;
图3为本发明实施例所述SQL元数据解析;
图4为本发明实施例所述的表单项生成示意图;
图5为常规数据查询模块示意图;
图6为本发明实施例所述组合数据查询模块示意图。
具体实施方式
下面对本发明的实施例作详细说明,本实施例以本发明的技术方案为依据开展,给出了详细的实施方式和具体的操作过程,对本发明的技术方案作进一步解释说明。
本发明提供一种信息系统复杂数据查询系统,如图1所示,包括在服务端的业务数据库、数据访问中间件及其SQL映射配置文件、复杂数据查询配置文件、查询配置文件解析模块、查询约束规则动态插入模块、SQL查询语句解析模块、自助化表单定义模块、数据查询通用缓存模块;还包括在前端的复杂数据查询表单生成脚本插件、组合数据查询模块。其中:
数据访问中间件及其SQL映射配置文件,负责查询数据库的查询参数、SQL生成,以及查询访问执行和结果集的数据查询对象转换。
复杂数据查询配置文件和查询配置文件解析模块,分别负责配置和解析复杂数据查询的条件要素、表单项属性、生成规则等。
查询约束规则动态插入模块,用于在系统加载时,根据配置形成的查询约束规则动态插入SQL映射配置文件。
数据查询通用缓存模块,用于保存复杂数据查询配置信息、动态SQL、系统数据缓存等,可以提升系统性能。
复杂数据查询表单生成脚本插件,用于根据复杂数据查询配置信息动态生成复杂数据查询表单嵌入模块。
组合数据查询表单模块,由常规数据查询Form表单模块和动态生成的复杂数据查询表单嵌入模块组成,负责业务查询的要素及条件筛选。
SQL查询语句解析器模块,用于SQL查询语句的语法解析和SQL Metadata元数据信息生成;自助化表单定义模块,根据SQLMetadata元数据信息生成的表单项集合,通过配置或界面拖拽等方式自助化定义查询表单。
其中的复杂数据查询配置文件,用于是定义条件要素、条件约束规则,生成动态表单项页面元素、以及元素之间关系和数据查询规则片段等,规范的关键节点和规则描述如下:
Selects节点为根节点,定义了一个和多个数据查询功能的集合。
Select节点为子节点,单个数据查询功能的条件要素、约束规则等的定义节点(含表单项及属性、要素关系约束规则、查询约束规则等)。
Select节点的ID属性,定义复杂数据查询的唯一标识,通过该标识可实现与组合数据查询的Form表单ID属性的绑定。
Select节点的Mapper属性,定义了某业务功能的数据查询操作对应的数据访问中间件的SQL映射配置文件的命名空间的标识名称。该SQL映射配置文件的标识的节点,配置有SQL映射查询的模板语句。如通过该标识名称,可以获取某业务功能的数据查询操作的SQL映射查询的模板语句,或者查询约束规则动态插入模块将定义的查询约束规则添加至SQL映射查询的模板语句的某个位置等。
Select节点的Location属性,定义了查询约束规则动态插入模块将配置已定义的查询约束规则添加至数据访问中间件的本命名空间的SQL映射查询的模板语句中的所在位置。该属性取值规则为:@Prefix、@Suffix、@ApplyPoint。其中@Prefix是将查询约束规则片段链接至SQL映射查询的模板语句的首位置;@Suffix是将查询约束规则片段链接至SQL映射查询的模板语句的末尾;@ApplyPoint是将查询约束规则片段链接至SQL映射查询的模板语句定义的@ApplyPoint变量所相应的指定位置。
Column节点为Select节点的子节点,定义了单个动态表单项(条件要素)的属性、要素关系约束规则、查询约束规则。
Column节点的Type属性,定义了该条件要素动态生成的表单项的表单输入组件类型。该属性取值范围为Text、Radio、Checkbox、Date、Select,并分别依次对应普通输入框、单选框、多选、日期选择、下拉选择框等组件。当该属性取值范围可根据表单UI组件的功能需求进行扩展。
Column节点的Scope属性,定义了表单条件要素的数值表达式所匹配的范围,该属性取值范围为EQ、Like、GT、GTQ、LT、LTQ、UNEQ、IN、UNIN,并分别依次对应的数值表达式为精准匹配、模糊匹配、大于、大于等于、小于、小于等于、不等于、范围内、不在范围内。当该属性取值范围可根据条件要素需求进行扩展。
Column节点的URL属性,定义了表单条件要素的数值来源类型,当表单项UI输入组件类型为一个多选、单选、下拉列表时,该表单项UI输入组件的数值内容为URL属性所定义的URL的HTTP远程链接返回的赋值内容。
Column节点的Cache属性,定义了表单条件要素的数值来源类型,当表单项UI输入组件类型为一个多选、单选、下拉列表时,Cache属性为缓存中的属性KEY值内容,该表单项UI输入组件的数值内容为通过访问系统缓存的所取到的赋值内容。
Column节点的SQL属性,定义了表单条件要素的数值来源类型,当表单项UI输入组件类型为一个多选、单选、下拉列表时,该表单项UI输入组件的数值内容为SQL属性所定义的SQL语句查询返回的赋值内容。
Column节点的DATA属性,定义了表单条件要素的数值来源类型,当表单项UI输入组件类型为一个多选、单选、下拉列表时,该表单项UI输入组件的数值内容为DATA属性所定义的结构化的数据返回的赋值内容,如JSON结构格式的赋值。
Column节点的Relation属性,定义了要素关系约束规则,约束了查询要素之间的关系,该属性取值范围为“与”、“或”、“非”。Relation属性为空或未定义时,默认缺省支持“与”、“或”、“非”所有取值。
Column节点的文本内容,定义了查询约束规则片段,并定义了Column节点的Relation关系规则、Column节点的Scope条件表达式、Column节点的表单值对应的在约束规则片段填充的变量。
对应于上述的信息系统复杂数据查询系统,本发明还公开一种信息系统复杂数据查询方法,如图2所示,包括以下步骤:
步骤一,信息系统启动时,查询配置文件解析模块加载复杂数据查询配置文件,并进行解析,生成复杂数据查询配置数据并保存至数据查询通用缓存模块。
步骤二,扫描生成的复杂数据查询配置数据,获取所有Select节点的Location属性,将配置已定义的查询约束规则添加至配置定义的数据访问中间件的SQL映射配置文件的相应命名空间的SQL映射查询的模板语句中的所在位置,可以是最前面@Prefix、最后面@Suffix、指定位置@ApplyPoint三种位置插入模式,然后再启动数据访问中间件去加载已更新过的SQL映射文件,服务端准备就绪等待调用。
所述Select节点中Column节点的文本内容即查询约束规则片段,预定义三个变量分别是:XRelation、XCondition、X分别对应表单要素的关系、条件、值三个输入项内容;其中X为Column节点的Name属性值。
步骤三,当信息系统的某业务查询功能的前端页面被加载打开时,根据常规数据查询模块Form表单的ID标识生成组合数据查询模块。
其中表单项元素的ID标识来源于Column节点Name属性,表单项元素类型Type来源于Column节点Type属性,要素表达式的的条件表单项,来源于Column节点的Scope属性。表单要素项之间的关系表单项,来源于Column节点Relation属性。
步骤四,所述组合数据查询模块,提交查询请求至后端,通过后端服务调用数据访问中间件执行所对应的相应命名空间的SQL映射查询的模板语句,基于组合数据查询的表单请求参数进行SQL生成填充,由数据访问中间件提交数据库执行复杂数据查询操作,并返回数据查询结果。
其中步骤三生成组合数据查询模块的方法有两种方式,第一种为按预定义查询表单自动生成组合数据查询模块,第二种为通过配置或界面拖拽等方式实现自助化定义查询表单来生成组合数据查询模块。
按预定义查询表单自动生成组合数据查询模块的方法,参照图2所示,包括:
步骤a1,当加载打开信息系统的前端业务查询功能的同时,加载复杂数据查询表单生成脚本插件;
步骤a2,复杂数据查询表单生成脚本插件动态获取复杂数据查询配置数据,根据Select节点描述信息及子节点Column节点的描述信息,生成复杂数据查询表单嵌入模块的表单项;
步骤a3,通过页面DOM模型,找到常规数据查询模块Form表单的ID标识;
步骤a4,再操作DOM模型,将复杂数据查询表单嵌入模块的表单项与Form表单中的表单项,形成组合数据查询模块。
通过配置或界面拖拽等方式实现自助化定义查询表单来生成组合数据查询模块的方法为:
步骤b1,当加载打开信息系统的前端业务查询功能时,数据查询From表单模块Form的ID通过异步通讯方式请求后端服务,获取该Form的ID与SQL映射配置文件的相应命名空间的SQL映射查询的模板语句;
步骤b2,取得的SQL映射查询的模板语句,该模板SQL生成哈希值,以哈希值为键进行缓存。通过SQL查询语句解析模块进行语法解析和SQL Metadata元数据信息生成;SQLMetadata元数据信息Statement表示对数据库的一个查询语句操作。解析模块将一个查询语句分成三部份:SelectItem:选择内容项、FromItem:数据来源项、Expression:条件选择表达式项集合用来过滤数据内容,对数据进行聚合、排序,如图3所示;
步骤b3,从SelectItem选择内容项中,进一步解析得到要展示的数据列ColumnMetedata元数据信息,从Expression中可以得到要过滤的Column Metedata;从FromItem寻找子Select查询语句,则递归子Select语句重复查询获得Column Metedata;
步骤b4,SQL查询语句解析模块进一步对查询SQL进行解析,直接得到查询SQL的相关Schema,Table,根据Schema和Table得到与SQL模板语句相关的Column Metedata元数据信息,见图4;
步骤b5,通过自助化表单定义模块,根据SQLMetadata元数据信息生成的表单项集合,通过配置或界面拖拽等方式自助化定义查询表单,形成组合数据查询模块。
以下实施案例以系统管理中基于用户条件要素的数据查询为例,说明本发明技术方案,具体实施步骤如下:
步骤一、系统管理中的系统预设的常规数据查询模块是只有一个查询条件要素(即用户名查询)的页面,通过用户名筛选进行数据查询条件过滤。如图5所示。
步骤二、在该常规数据查询模块中现需要增加动态增加“用户昵称”、“用户年龄”、“用户性别”作为查询条件要素,复杂数据查询配置文件的主要配置:
<Selects>
<Select Id="UserQuery"Lable="高级查询"Location="@Suffix"Mapper="com.user.mapper.selectUser">
<Column name="nickName"lable="用户昵称"type="text"scope="like">
#{nickNameRelation}USER_.PK IN(SELECT uu.USER_ID FROM base_user ur
WHERE ur.USER_NICK_NAME{nickNameCondition}'%#{nickName}%')
</Column>
<Column name="sex"Lable="用户性别"Type="Select"scope="eq"Cache="sex">
#{sexRelation}USER_.PK IN(SELECT uu.USER_ID FROM base_user urWHEREur.USER_SEX#{sexCondition}'#{sex}')
</Column>
<Column name="age"Lable="用户年龄"Type="text"Scope="eq、gt、gtq、lt、ltq、uneq、in、unin">#{ageRelation}USER_ID IN(SELECT uu.USER_PK FROM base_userur WHEREur.USER_AGE#{ageCondition}#{age})
</Column>
<Select>
</Selects>
步骤三、信息系统启动时,加载复杂数据查询配置文件,并扫描生成的复杂数据查询配置数据,以Select节点的ID属性值UserQuery为Key值,将该数据查询配置信息保存至系统缓存模块。获取Select节点的ID属性值UserQuery的Location属性,通过Mapper定义的com.user.mapper.selectUser命名空间,将配置已定义的查询约束规则添加至配置定义的数据访问中间件的SQL映射配置文件的相应命名空间的SQL映射查询的模板语句中的所在位置,并根据Location=“@Suffix”插入模式,插入至最后面。再启动数据访问中间件加载已更新过的SQL映射文件,服务端准备就绪。更新的SQL映射文件的查询模板语句,可根据数据访问中间件SQL映射的SQL拼接语法,如嵌套的IF Test条件语法机制,动态添加查询约束规则片段,可防止运行时参数传递拼接串带来的SQL注入问题。
步骤四、当信息系统的用户查询功能的前端页面被加载打开时,同时加载复杂数据查询表单生成脚本插件,该脚本插件通过异步请求AJAX动态获取复杂数据查询配置数据,根据Select节点描述信息及子节点Column节点的描述信息,生成复杂数据查询表单嵌入模块的表单项在常规数据查询模块前面或最后面,组合页面如图6所示。
条件要素“用户昵称”的新增表单项FORM的HTML页面标签描述为<input name=”nickName”lable=”用户昵称”type=”text”/>。
条件要素“用户性别”的配置的数值来源类型cache=”sex”,新增表单项则从系统缓存获取Key值为Sex的数据字典信息,表单项FORM的HTML页面标签描述为<select name="sex"vaule=”用户性别”><option value="man">男</option><option value="woman"selected>女</option></select>。
上述动态页面标签、表单项然后通过页面DOM模型,找到常规数据查询模块Form表单的ID标识,再操作DOM模型动态添加至Form表单中的表单项已有元素的最后面或最前面,形成组合数据查询模块。
以上实施例为本申请的优选实施例,本领域的普通技术人员还可以在此基础上进行各种变换或改进,在不脱离本申请总的构思的前提下,这些变换或改进都应当属于本申请要求保护的范围之内。
Claims (4)
1.一种信息系统复杂数据查询系统,包括服务端和前端,所述服务端包括业务数据库、数据访问中间件及其SQL映射配置文件、SQL查询语句解析模块、数据查询通用缓存模块,前端包括常规数据查询Form表单模块;其特征在于,服务端还包括复杂数据查询配置文件、查询配置文件解析模块、查询约束规则动态插入模块;
服务端还包括自助化表单定义模块,用于根据SQLMetadata元数据信息生成的表单项集合,通过配置或界面拖拽方式自助化定义查询表单;其中,所述SQL Metadata元数据,由SQL查询语句解析模块对SQL查询语句进行语法解析并生成;
前端还包括复杂数据查询表单生成脚本插件;用于根据复杂数据查询配置信息,动态生成复杂数据查询表单嵌入模块;
所述复杂数据查询表单嵌入模块,与常规数据查询Form表单模块构成组合数据查询模块,用于业务查询的要素及条件筛选;
所述复杂数据查询配置文件,用于配置复杂数据查询的条件要素、表单项属性、生成规则;
所述复杂数据查询配置文件,配置规范的关键节点包括:根节点Selects、根节点的子节点Select、Select的子节点Column;其中,
Selects根节点,是定义了一个或多个数据查询功能的集合;
Select节点,是定义了单个数据查询功能的要素、约束规则的节点;
Column节点,是定义了单个动态表单项的属性、要素关系约束规则、查询约束规则的节点;
所述Select节点包括ID属性、Mapper属性和Location属性;其中,
Select节点的ID属性,定义复杂数据查询的唯一标识,通过该标识实现与组合数据查询的Form表单ID属性的绑定;
Select节点的Mapper属性,定义了某业务功能的数据查询操作对应的数据访问中间件的SQL映射配置文件的命名空间的标识名称;该SQL映射配置文件的标识的节点,配置有SQL映射查询的模板语句;通过该标识名称,获取某业务功能的数据查询操作的SQL映射查询的模板语句,或者查询约束规则动态插入模块将定义的查询约束规则添加至SQL映射查询的模板语句的某个位置;
Select节点的Location属性,定义了查询约束规则动态插入模块将配置已定义的查询约束规则添加至数据访问中间件的本命名空间的SQL映射查询的模板语句中的所在位置;
所述查询配置文件解析模块,用于解析复杂数据查询的条件要素、表单项属性、生成规则;
所述查询约束规则动态插入模块,用于在系统加载时,根据配置形成的查询约束规则动态插入SQL映射配置文件。
2.根据权利要求1所述系统,其特征在于,所述Column节点包括Type属性、Scope属性、URL属性、Cache属性、SQL属性、DATA属性、Relation属性、文本内容;其中,
Column节点的Type属性,定义了条件要素动态生成的表单项的表单输入组件类型;Type属性取值范围分别依次对应普通输入框、单选框、多选、日期选择、下拉选择框组件;
Column节点的Scope属性,定义了表单条件要素的数值表达式所匹配的范围,该属性取值范围为EQ、Like、GT、GTQ、LT、LTQ、UNEQ、IN、UNIN,并分别依次对应的数值表达式为精准匹配、模糊匹配、大于、大于等于、小于、小于等于、不等于、范围内、不在范围内;
Column节点的URL属性,定义了表单条件要素的数值来源类型,当表单项UI输入组件类型为一个多选、单选、下拉列表时,该表单项UI输入组件的数值内容为URL属性所定义的URL的HTTP远程链接返回的赋值内容;
Column节点的Cache属性,定义了表单条件要素的数值来源类型,当表单项UI输入组件类型为一个多选、单选、下拉列表时,Cache属性为缓存中的属性KEY值内容,该表单项UI输入组件的数值内容为通过访问系统缓存的所取到的赋值内容;
Column节点的SQL属性,定义了表单条件要素的数值来源类型,当表单项UI输入组件类型为一个多选、单选、下拉列表时,该表单项UI输入组件的数值内容为SQL属性所定义的SQL语句查询返回的赋值内容;
Column节点的DATA属性,定义了表单条件要素的数值来源类型,当表单项UI输入组件类型为一个多选、单选、下拉列表时,该表单项UI输入组件的数值内容为DATA属性所定义的结构化的数据返回的赋值内容;
Column节点的Relation属性,定义了要素关系约束规则,约束了查询要素之间的关系,该属性取值范围为“与”、“或”、“非”;当Relation属性为空或未定义时,默认缺省支持“与”、“或”、“非”所有取值;
Column节点的文本内容,定义了查询约束规则片段,并定义了Column节点的Relation关系规则、Column节点的Scope条件表达式、Column节点的表单值对应的在约束规则片段填充的变量。
3.一种基于权利要求1或2所述系统的信息系统复杂数据查询方法,其特征在于,包括以下步骤:
步骤一,信息系统启动时,查询配置文件解析模块加载复杂数据查询配置文件,并进行解析,生成复杂数据查询配置数据并保存至数据查询通用缓存模块;
步骤二,扫描生成的复杂数据查询配置数据,获取所有Select节点的Location属性,将配置已定义的查询约束规则添加至配置定义的数据访问中间件的SQL映射配置文件的相应命名空间的SQL映射查询的模板语句中的所在位置,然后再启动数据访问中间件去加载已更新过的SQL映射配置文件,服务端准备就绪等待调用;
步骤三,当加载打开信息系统的前端业务查询功能时,根据常规数据查询模块Form表单的ID标识生成组合数据查询模块;
其中,生成组合数据查询模块的方法为:
步骤a1,当加载打开信息系统的前端业务查询功能的同时,加载复杂数据查询表单生成脚本插件;
步骤a2,复杂数据查询表单生成脚本插件动态获取复杂数据查询配置数据,根据Select节点描述信息及子节点Column节点的描述信息,生成复杂数据查询表单嵌入模块的表单项;
步骤a3,通过页面DOM模型,找到常规数据查询模块Form表单的ID标识;
步骤a4,再操作DOM模型,将复杂数据查询表单嵌入模块的表单项与Form表单中的表单项,形成组合数据查询模块;
或者,生成组合数据查询模块的方法为:
步骤b1,当加载打开信息系统的前端业务查询功能时,数据查询From表单模块Form的ID通过异步通讯方式请求服务端,获取该Form的ID与SQL映射配置文件的相应命名空间的SQL映射查询的模板语句;
步骤b2,取得的SQL映射查询的模板语句,该模板SQL生成哈希值,以哈希值为键进行缓存;通过SQL查询语句解析模块进行语法解析和SQLMetadata元数据信息生成;其中,解析模块将一个查询语句分成三部分:选择内容项SelectItem、数据来源项FromItem、条件选择表达式项集合Expression;
步骤b3,从SelectItem选择内容项中,进一步解析得到要展示的数据列ColumnMetedata元数据信息,从Expression中得到要过滤的Column Metedata;从FromItem寻找子Select查询语句,则递归子Select语句重复查询获得Column Metedata;
步骤b4,SQL查询语句解析模块进一步对查询SQL进行解析,直接得到查询SQL的相关Schema和Table,根据Schema和Table得到与SQL模板语句相关的Column Metedata元数据信息;
步骤b5,通过自助化表单定义模块,根据SQLMetadata元数据信息生成的表单项集合,通过配置或界面拖拽方式自助化定义查询表单,形成组合数据查询模块;
步骤四,组合数据查询模块提交查询请求至服务端,通过服务端调用数据访问中间件执行所对应的相应命名空间的SQL映射查询的模板语句,基于组合数据查询的表单请求参数进行SQL生成填充,由数据访问中间件提交数据库执行复杂数据查询操作,并返回数据查询结果。
4.根据权利要求3所述的方法,其特征在于,SQL映射配置文件的查询模板语句,根据数据访问中间件SQL映射的SQL拼接语法,动态添加查询约束规则片段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010884368.4A CN112035510B (zh) | 2020-08-28 | 2020-08-28 | 一种信息系统复杂数据查询方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010884368.4A CN112035510B (zh) | 2020-08-28 | 2020-08-28 | 一种信息系统复杂数据查询方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112035510A CN112035510A (zh) | 2020-12-04 |
CN112035510B true CN112035510B (zh) | 2023-12-19 |
Family
ID=73586134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010884368.4A Active CN112035510B (zh) | 2020-08-28 | 2020-08-28 | 一种信息系统复杂数据查询方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112035510B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113111239B (zh) * | 2021-04-08 | 2024-03-29 | 北京联创新天科技有限公司 | 一种通用数据库操作方法、装置及其存储介质 |
CN113407565B (zh) * | 2021-06-29 | 2024-01-30 | 中国民生银行股份有限公司 | 跨库数据查询方法、装置和设备 |
CN113420044A (zh) * | 2021-06-30 | 2021-09-21 | 平安国际智慧城市科技股份有限公司 | 数据查询方法、装置、设备和存储介质 |
CN113609154B (zh) * | 2021-08-06 | 2023-08-29 | 网易(杭州)网络有限公司 | 一种数据查询方法、装置、电子设备和存储介质 |
CN113515549B (zh) * | 2021-09-14 | 2021-12-10 | 江西科技学院 | 财务数据查询方法、装置及可读存储介质 |
CN115688187B (zh) * | 2023-01-04 | 2023-03-21 | 中科方德软件有限公司 | 硬链接数据的安全管理方法、装置、设备及存储介质 |
CN116821164B (zh) * | 2023-08-31 | 2023-11-21 | 成都智慧锦城大数据有限公司 | 一种实现可视化灵活组合动态配置的搜索方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1881208A (zh) * | 2005-06-14 | 2006-12-20 | 联想(北京)有限公司 | 动态结构化查询语言语句的构造方法 |
KR101260436B1 (ko) * | 2012-10-24 | 2013-05-09 | 주식회사 소프트잼 | 구조화 질의어 자동 처리 시스템과 방법 및 그를 실행하기 위한 프로그램이 기록되는 컴퓨터로 읽을 수 있는 기록매체 |
CN103279509A (zh) * | 2013-05-17 | 2013-09-04 | 北京首钢自动化信息技术有限公司 | 一种采用动态查询语言的快速查询方法 |
CN106776986A (zh) * | 2016-12-06 | 2017-05-31 | 浪潮通用软件有限公司 | 一种可配置的表单扩展信息传递方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8140558B2 (en) * | 2009-05-22 | 2012-03-20 | International Business Machines Corporation | Generating structured query language/extensible markup language (SQL/XML) statements |
US10649987B2 (en) * | 2017-01-31 | 2020-05-12 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing conditional statement execution within a multi-tenant aware structured query language |
-
2020
- 2020-08-28 CN CN202010884368.4A patent/CN112035510B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1881208A (zh) * | 2005-06-14 | 2006-12-20 | 联想(北京)有限公司 | 动态结构化查询语言语句的构造方法 |
KR101260436B1 (ko) * | 2012-10-24 | 2013-05-09 | 주식회사 소프트잼 | 구조화 질의어 자동 처리 시스템과 방법 및 그를 실행하기 위한 프로그램이 기록되는 컴퓨터로 읽을 수 있는 기록매체 |
CN103279509A (zh) * | 2013-05-17 | 2013-09-04 | 北京首钢自动化信息技术有限公司 | 一种采用动态查询语言的快速查询方法 |
CN106776986A (zh) * | 2016-12-06 | 2017-05-31 | 浪潮通用软件有限公司 | 一种可配置的表单扩展信息传递方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112035510A (zh) | 2020-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112035510B (zh) | 一种信息系统复杂数据查询方法及系统 | |
US7877726B2 (en) | Semantic system for integrating software components | |
US5913214A (en) | Data extraction from world wide web pages | |
US7882122B2 (en) | Remote access of heterogeneous data | |
US6766330B1 (en) | Universal output constructor for XML queries universal output constructor for XML queries | |
US7774321B2 (en) | Partial XML validation | |
US7917500B2 (en) | System for and method of searching structured documents using indexes | |
US7886224B2 (en) | System and method for transforming tabular form date into structured document | |
US20050165754A1 (en) | Method and system for data retrieval from heterogeneous data sources | |
US20020078041A1 (en) | System and method of translating a universal query language to SQL | |
US8671103B2 (en) | Method for semantic service registration and query based on WordNet | |
US20130282724A1 (en) | Method and system to automatically generate software code | |
US20080222121A1 (en) | System for Adaptively Querying a Data Storage Repository | |
US8650182B2 (en) | Mechanism for efficiently searching XML document collections | |
US7457812B2 (en) | System and method for managing structured document | |
US20060015809A1 (en) | Structured-document management apparatus, search apparatus, storage method, search method and program | |
US20120011136A1 (en) | Processing Structured Documents Stored in a Database | |
US20040049495A1 (en) | System and method for automatically generating general queries | |
US7797340B2 (en) | Method and system for searchable web services | |
KR100899616B1 (ko) | 관계형 데이터베이스를 이용한 메타데이터 관리 방법 및시스템 | |
US7437352B2 (en) | Data plotting extension for structured query language | |
KR100417569B1 (ko) | 메타데이터 교환표준을 이용한 분산 이종 데이터베이스검색방법 | |
CN111831684B (zh) | 数据的查询方法、装置和计算机可读存储介质 | |
CN101719162A (zh) | 基于片段模式匹配的多版本开放式地理信息服务访问方法及系统 | |
US7840582B2 (en) | System and method for retrieving information from the internet by means of an intelligent search agent |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |