CN114996554A - 数据库的查询方法、装置、存储介质及电子设备 - Google Patents
数据库的查询方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN114996554A CN114996554A CN202210639659.6A CN202210639659A CN114996554A CN 114996554 A CN114996554 A CN 114996554A CN 202210639659 A CN202210639659 A CN 202210639659A CN 114996554 A CN114996554 A CN 114996554A
- Authority
- CN
- China
- Prior art keywords
- query
- target
- database
- field
- condition
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000004044 response Effects 0.000 claims abstract description 22
- 238000004590 computer program Methods 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 11
- 238000011161 development Methods 0.000 description 8
- 230000005236 sound signal Effects 0.000 description 4
- 238000001914 filtration Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
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/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9532—Query formulation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (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
本公开涉及一种数据库的查询方法、装置、存储介质及电子设备,服务器接收客户端发送的数据库查询请求消息,所述数据库查询请求消息包括当前待查询数据库的目标类型和目标查询条件,所述目标查询条件为将各个查询子条件按照预设格式拼接得到的查询条件;根据所述目标查询条件确定查询配置文件,所述查询配置文件用于表征所述查询子条件的组合关系;根据所述目标类型解析所述查询配置文件,得到与所述目标类型的数据库对应的目标查询语句;根据所述目标查询语句查询所述目标类型对应的数据库,得到查询响应结果,并将所述查询响应结果发送至所述客户端。
Description
技术领域
本公开涉及数据库的查询领域,具体地,涉及一种数据库的查询方法、装置、存储介质及电子设备。
背景技术
用户在浏览互联网内容时,往往需要自定义选择条件进行组合从而实现针对性查询,缩小浏览内容范围,其中最常见的应用就是高级搜索(筛选),而这些功能的实现一般都是通过各种数据库进行查询。
相关技术中在实现高级搜索或者其它复杂查询时,针对不同的数据库,需要单独开发代码去查询,并且大都是通过对各种查询条件进行拼接,复杂的拼接使得代码的复杂度较高,进而存在开发维护成本高,代码侵入性高,可读性差的问题。
发明内容
本公开的目的是提供一种数据库的查询方法、装置、存储介质及电子设备。
第一方面,本公开提供一种数据库的查询方法,应用于服务器,所述方法包括:接收客户端发送的数据库查询请求消息,所述数据库查询请求消息包括当前待查询数据库的目标类型和目标查询条件,所述目标查询条件为将各个查询子条件按照预设格式拼接得到的查询条件;根据所述目标查询条件确定查询配置文件,所述查询配置文件用于表征所述查询子条件的组合关系;根据所述目标类型解析所述查询配置文件,得到与所述目标类型的数据库对应的目标查询语句;根据所述目标查询语句查询所述目标类型对应的数据库,得到查询响应结果,并将所述查询响应结果发送至所述客户端。
可选地,所述目标查询条件包括按照JSON格式拼接得到的树结构字符串,所述根据所述目标查询条件确定查询配置文件包括:
根据所述树结构字符串中的第一JSON字段确定一个或者多个不同的查询条件集合,所述查询条件集合中包括一个或者多个用户选择的查询子条件;
针对每个查询条件集合,根据所述树结构字符串确定该查询条件集合对应的第一JSON字段的字段值;
针对目标JSON字段对应的目标查询条件集合,获取所述目标查询条件集合中每个查询子条件对应的第二JSON字段,以及所述第二JSON字段的字段值,所述目标JSON字段为字段值为指定值的第一JSON字段;
根据所述第一JSON字段、所述第一JSON字段的字段值、所述第二JSON字段以及所述第二JSON字段的字段值确定所述查询配置文件。
可选地,所述根据所述目标类型解析所述查询配置文件,得到与所述目标类型的数据库对应的目标查询语句包括:
针对所述查询配置文件中的每个指定字段,根据所述目标类型的数据库语法确定该指定字段在所述目标类型的数据库中对应的字段目标值;
将所述查询配置文件中所述指定字段的字段值修改为所述字段目标值后,得到所述目标查询语句。
可选地,在所述根据所述目标类型解析所述查询配置文件,得到与所述目标类型的数据库对应的目标查询语句之前,所述方法还包括:
根据所述查询配置文件生成查询条件树;
所述根据所述目标类型解析所述查询配置文件,得到与所述目标类型的数据库对应的目标查询语句包括:
按照所述查询条件树的节点指向关系逐节点解析所述查询配置文件,得到所述目标查询语句。
可选地,所述查询条件树包括多个节点,所述根据所述查询配置文件生成查询条件树包括:
针对所述查询配置文件中字段类型为指定字段类型的每个目标字段,将该目标字段对应的节点确定为父节点,将该目标字段下的预设字段对应的节点作为子节点,并将所述父节点指向所述子节点得到每个节点的指向关系;
根据每个目标字段的字段值、除所述目标字段以外的其它预设字段对应的字段值以及所述指向关系生成所述查询条件树。
第二方面,提供一种数据库的查询方法,应用于客户端,所述方法包括:
获取目标组件对应的组件显示值和组件隐藏值,以及多个所述目标组件之间的组合关系,所述目标组件为用户选择的查询子条件对应的界面组件,不同的查询子条件对应不同的界面组件,所述组合关系用于表征多个所述查询子条件的拼接关系;
根据所述组件显示值、所述组件隐藏值以及所述组合关系对所述查询子条件按照预设格式进行拼接得到目标查询条件;
获取当前待查询数据库的目标类型;
根据所述目标查询条件和所述目标类型生成数据库查询请求消息;
向服务器发送所述数据库查询请求消息,以便所述服务器根据所述数据库查询请求消息解析得到与所述目标类型的数据库对应的目标查询语句,并根据所述目标查询语句查询所述目标类型对应的数据库后,向所述客户端返回查询响应结果。
可选地,所述预设格式包括JSON格式,所述JSON格式包括多个预设JSON字段;所述根据所述组件显示值、所述组件隐藏值以及所述组合关系对所述查询子条件按照预设格式进行拼接得到目标查询条件包括:
根据所述组合关系从多个所述预设JSON字段中确定每个查询条件集合分别对应的第一JSON字段,以及每个第一JSON字段的字段值,所述查询条件集合中包括一个或者多个查询子条件;
从多个所述预设JSON字段中确定每个目标组件的组件显示值和组件隐藏值分别对应的第二JSON字段;
根据所述第一JSON字段、每个第一JSON字段的字段值、所述第二JSON字段、以及每个目标组件的组件显示值和组件隐藏值对所述查询子条件进行拼接得到所述目标查询条件。
可选地,所述目标查询条件包括树结构字符串。
第三方面,提供一种数据库的查询装置,应用于服务器,所述装置包括:
接收模块,用于接收客户端发送的数据库查询请求消息,所述数据库查询请求消息包括当前待查询数据库的目标类型和目标查询条件,所述目标查询条件为将各个查询子条件按照预设格式拼接得到的查询条件;
确定模块,用于根据所述目标查询条件确定查询配置文件,所述查询配置文件用于表征所述查询子条件的组合关系;
解析模块,用于根据所述目标类型解析所述查询配置文件,得到与所述目标类型的数据库对应的目标查询语句;
查询模块,用于根据所述目标查询语句查询所述目标类型对应的数据库,得到查询响应结果,并将所述查询响应结果发送至所述客户端。
第四方面,提供一种数据库的查询装置,应用于客户端,所述装置包括:
第一获取模块,用于获取目标组件对应的组件显示值和组件隐藏值,以及多个所述目标组件之间的组合关系,所述目标组件为用户选择的查询子条件对应的界面组件,不同的查询子条件对应不同的界面组件,所述组合关系用于表征多个所述查询子条件的拼接关系;
条件拼接模块,用于根据所述组件显示值、所述组件隐藏值以及所述组合关系对所述查询子条件按照预设格式进行拼接得到目标查询条件;
第二获取模块,用于获取当前待查询数据库的目标类型;
请求消息生成模块,用于根据所述目标查询条件和所述目标类型生成数据库查询请求消息;
发送模块,用于向服务器发送所述数据库查询请求消息,以便所述服务器根据所述数据库查询请求消息解析得到与所述目标类型的数据库对应的目标查询语句,并根据所述目标查询语句查询所述目标类型对应的数据库后,向所述客户端返回查询响应结果。
第五方面,提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开第一方面所述方法的步骤,或者,该程序被处理器执行时实现本公开第二方面所述方法的步骤。
第六方面,提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第一方面所述方法的步骤;或者,
处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第二方面所述方法的步骤。
通过上述技术方案,服务器可以接收客户端发送的当前待查询数据库的目标类型和用户选择的查询子条件的拼接组合,即该目标查询条件,该目标查询条件是按照预设统一格式进行拼接的,这样,服务器可以先就该目标查询条件生成一个统一的查询配置文件,之后可以按照该数据库的目标类型对应的语法对该查询配置文件解析后得到与所述目标类型的数据库对应的目标查询语句,从而可以实现对不同的数据库类型均可按照该方式进行数据库查询,无需针对不同的数据库单独开发查询代码,提高数据库查询代码的开发效率。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性实施例示出的第一种数据库的查询方法的流程图;
图2是根据一示例性实施例示出的第二种数据库的查询方法的流程图;
图3是根据一示例性实施例示出的第三种数据库的查询方法的流程图;
图4是根据一示例性实施例示出的一种查询界面示意图;
图5是根据一示例性实施例示出的一种查询条件树的架构示意图;
图6是根据一示例性实施例示出的第一种数据库的查询装置的框图;
图7是根据一示例性实施例示出的第二种数据库的查询装置的框图;
图8是根据一示例性实施例示出的一种电子设备的框图;
图9是根据一示例性实施例示出的另一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
需要说明的是,本公开中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
本公开主要应用于基于数据库查询实现高级搜索或者其它复杂查询的场景中,相关技术中存在以下问题:
在实现高级搜索或者其它复杂查询时,针对不同的数据库,需要单独开发代码去查询,并且大都是通过对各种查询条件进行拼接,复杂的拼接使得代码的复杂度较高,进而存在开发维护成本高,代码侵入性高,可读性差的问题;另外,产品迭代新增筛选条件时,需要重新开发测试部署代码,无法动态新增查询条件。
为解决上述存在的问题,本公开提供一种数据库的查询方法、装置、存储介质及电子设备。
下面结合附图,对本公开的具体实施方式进行详细说明。
图1是根据一示例性实施例示出的一种数据库的查询方法的流程图,该方法可以应用于服务器,如图1所示,该方法包括以下步骤:
在步骤101中,接收客户端发送的数据库查询请求消息,该数据库查询请求消息包括当前待查询数据库的目标类型和目标查询条件。
其中,目标类型例如可以包括Mysql,Mongo,ES,Oracle,SqlServer等数据库类型,该目标查询条件为将各个查询子条件按照预设格式拼接得到的查询条件,该预设格式例如可以为JSON格式,该目标查询条件包括按照JSON格式拼接得到的树结构字符串。
实际的数据库查询场景中,用户可以通过客户端上的查询界面选择或者输入所需要的查询条件,该查询界面中可以包括多个预先设置的界面组件,不同的查询子条件对应不同的界面组件,并且还可以进一步根据界面组件对应的查询子条件的属性,这样,客户端可以根据用户选择的目标组件的组件显示值和组件隐藏值,以及多个该目标组件之间的组合关系对该查询子条件按照预设格式进行拼接得到目标查询条件,然后根据该目标查询条件和当前待查询数据库的目标类型生成该数据库查询请求消息,之后客户端向服务器发送该数据库查询请求消息。
在步骤102中,根据目标查询条件确定查询配置文件,查询配置文件用于表征查询子条件的组合关系。
其中,该组合关系例如可以包括“且”(或者称之为“与”)、“或”、“非”等。
在步骤103中,根据目标类型解析查询配置文件,得到与目标类型的数据库对应的目标查询语句。
在本步骤中,服务器针对该查询配置文件中的每个指定字段,根据该目标类型的数据库语法确定该指定字段在该目标类型的数据库中对应的字段目标值;将该查询配置文件中该指定字段的字段值修改为该字段目标值后,得到该目标查询语句。
在步骤104中,根据目标查询语句查询目标类型对应的数据库,得到查询响应结果,并将查询响应结果发送至客户端。
采用上述方法,服务器可以接收客户端发送的当前待查询数据库的类型和用户选择的查询子条件的拼接组合,即该目标查询条件,该目标查询条件是按照预设统一格式进行拼接的,这样,服务器可以先就该目标查询条件生成一个统一的查询配置文件,之后可以根据数据库的目标类型,按照该数据库的目标类型对应的语法对该查询配置文件解析后得到与该目标类型的数据库对应的目标查询语句,从而可以实现对不同的数据库类型均可按照该方式进行数据库查询,无需针对不同的数据库单独开发查询代码,提高数据查询代码的开发效率。
图2是根据一示例性实施例示出的一种数据库查询方法的流程图,该方法可以应用于客户端,如图2所示,该方法包括以下步骤:
在步骤201中,获取目标组件对应的组件显示值和组件隐藏值,以及多个目标组件之间的组合关系。
其中,该目标组件为用户选择的查询子条件对应的界面组件,不同的查询子条件对应不同的界面组件,该组合关系用于表征多个该查询子条件的拼接关系,例如,该组合关系可以包括“且”(或者称之为“与”)、“或”、“非”等,该组件显示值是指界面组件上显示给用户的预设组件名称,该组件隐藏值可以理解成是与该界面组件对应的预设键值(例如表示为key值)。
实际的数据库查询场景中,用户可以通过查询界面选择或者输入所需要的查询条件,一种可能的实现方式中,该查询界面中包括多个预先设置的界面组件,不同的查询子条件对应不同的界面组件,并且还可以进一步根据界面组件对应的查询子条件的属性,确定不同的界面组件之间的组合关系。
在步骤202中,根据组件显示值、组件隐藏值以及组合关系对查询子条件按照预设格式进行拼接得到目标查询条件。
本步骤的具体实现方式可以参考图3所示实施例中步骤302中的相关描述。
在步骤203中,获取当前待查询数据库的目标类型。
其中,该目标类型例如可以包括Mysql,Mongo,ES,Oracle,SqlServer等数据库类型。
在步骤204中,根据目标查询条件和目标类型生成数据库查询请求消息。
其中,该数据库查询请求消息包括当前待查询数据库的目标类型和目标查询条件,该目标查询条件为将各个查询子条件按照预设格式拼接得到的查询条件,该预设格式可以为JSON格式。
在步骤205中,向服务器发送数据库查询请求消息。
这样,服务器根据该数据库查询请求消息解析得到与该目标类型的数据库对应的目标查询语句,并根据该目标查询语句查询该目标类型对应的数据库后,向该客户端返回查询响应结果。
采用上述方法,客户端可以向服务器发送当前待查询数据库的目标类型和用户选择的查询子条件的拼接组合,即该目标查询条件,该目标查询条件是按照预设统一格式进行拼接的,这样,服务器可以先就该目标查询条件生成一个统一的查询配置文件,之后可以根据数据库的目标类型,按照该数据库的目标类型对应的语法对该查询配置文件解析后得到与该目标类型的数据库对应的目标查询语句,从而可以实现对不同的数据库类型均可按照该方式进行数据库查询,无需针对不同的数据库单独开发查询代码,提高数据查询代码的开发效率。
图3是根据一示例性实施例示出的一种数据库的查询方法的流程图,如图3所示,该方法包括以下步骤:
在步骤301中,客户端获取目标组件对应的组件显示值和组件隐藏值,以及多个目标组件之间的组合关系。
其中,该目标组件为用户选择的查询子条件对应的界面组件,不同的查询子条件对应不同的界面组件,该组合关系用于表征多个该查询子条件的拼接关系,例如,该组合关系可以包括“且”(或者称之为“与”)、“或”、“非”等,该组件显示值是指界面组件上显示给用户的预设组件名称,该组件隐藏值可以理解成是与该界面组件对应的预设键值(例如表示为key值)。
实际的数据库查询场景中,用户可以通过查询界面选择或者输入所需要的查询条件,一种可能的实现方式中,该查询界面中包括多个预先设置的界面组件,不同的查询子条件对应不同的界面组件,并且还可以进一步根据界面组件对应的查询子条件的属性,确定不同的界面组件之间的组合关系。
示例地,图4是根据一示例性实施例示出的一种查询界面示意图,如图4所示,界面上包括多个界面组件(如图4中的“□企业名称”、“□产品服务”、“□股份有限公司”等),不同的界面组件对应不同的查询子条件,并且通常情况下,属于同一属性的查询子条件的界面组件之间,其组合关系是“或”,对应不同属性的查询子条件的界面组件之间,其组合关系是“且”,例如,图4中所示的界面上展示了“注册资本”、“成立时间”、“企业状态”、“搜索范围”等条件属性,以“企业状态”、“搜索范围”两个属性为例,对应属性“企业状态”的查询子条件包括“吊销”、“注销”、“停业”等条件,对应属性“搜索范围”的查询子条件包括“企业名称”、“产品服务器”、“经营范围”等条件,其中,由于“吊销”、“注销”、“停业”对应同一属性“企业状态”,因此,查询子条件“吊销”、“注销”、“停业”对应的界面组件之间的组合关系为“或”,由于“企业名称”、“产品服务器”、“经营范围”对应同一属性“搜索范围”,因此,查询子条件“企业名称”、“产品服务器”、“经营范围”对应的界面组件之间的组合关系为“或”;进一步地,查询子条件“企业名称”和查询子条件“注销”分别对应不同的条件属性,因此查询子条件“企业名称”和“注销”对应的界面组件之间的组合关系为“且”,上述示例仅是举例说明,本公开对此不作限定。
在另一种可能的实现方式中,用户也可以在预设输入框中自定义用户选择的各个查询子条件的组合关系。
以图4中的界面组件“□联系方式”为例,该界面组件的组件显示值即为向用户显示的“联系方式”,该界面组件的组件隐藏值可以表示为"key":"contact_way",此处仅是举例说明,本公开对此不作限定。
在步骤302中,客户端根据组件显示值、组件隐藏值以及组合关系对查询子条件按照预设格式进行拼接得到目标查询条件。
其中,该预设格式包括JSON格式,该JSON格式包括多个预设JSON字段,该预设JSON字段例如可以包括"filterConditionEnum"、"matchNodes"、"key"等预设字段,该目标查询条件包括按照JSON格式拼接得到的树结构字符串。
在本步骤中,可以根据该组合关系从多个该预设JSON字段中确定每个查询条件集合分别对应的第一JSON字段,以及每个第一JSON字段的字段值,该查询条件集合中包括一个或者多个查询子条件;从多个该预设JSON字段中确定每个目标组件的组件显示值和组件隐藏值分别对应的第二JSON字段;根据该第一JSON字段、每个第一JSON字段的字段值、该第二JSON字段、以及每个目标组件的组件显示值和组件隐藏值对该查询子条件进行拼接得到该目标查询条件。
示例地,假设用户选择的目标组件包括“□老板”“□从未购买VIP”以及“□一线城市”,上述三个目标组件对应的查询子条件分别对应不同的条件属性,因此可以确定上述查询子条件之间的组合关系为“且”,上述三个查询子条件可以视为属于同一个查询条件集合,用户还自定义了另一查询子条件“用户所在城市是一线城市”也就是说,用户选择的查询条件为:
“用户身份包含老板”并且“用户是从未购买VIP”并且“用户所在城市是一线城市”;或者,
“用户所在城市是一线城市”;
由此可知,用户选择的查询条件包括查询条件集合:(A或B)、(A)、(B)三个条件集合,其中,A对应“用户身份包含老板”并且“用户是从未购买VIP”并且“用户所在城市是一线城市”,B对应“用户所在城市是一线城市”,针对上述每个查询条件集合,从多个预设JSON字段中确定每个查询条件集合分别对应的第一JSON字段为:集合(A或B)对应的第一JSON字段为"filterConditionEnum",集合(A或B)对应的第一JSON字段的字段值为"ANY";集合(A)中包括三个需要同时满足的查询子条件,因此,集合(A)对应的第一JSON字段为"filterConditionEnum",集合(A)对应的第一JSON字段的字段值为"ALL";集合(B)中包括一个查询子条件,因此,集合(B)对应的第一JSON字段为"filterConditionEnum",集合(B)对应的第一JSON字段的字段值为"ALL"。
之后,从多个预设JSON字段中确定每个目标组件的组件显示值和组件隐藏值分别对应的第二JSON字段,其中,目标组件“□老板”“□从未购买VIP”以及“□一线城市”对应的组件显示值分别为“老板”、“从未购买VIP”以及“一线城市”,上述三个目标组件分别对应的组件隐藏值分别为"user_identity"、"is_vip"、"city_type",从多个预设JSON字段中可以分别确定出每个组件显示值和每个组件隐藏值分别对应的该第二JSON字段,之后,可以根据第一JSON字段、每个第一JSON字段的字段值、该第二JSON字段、以及每个目标组件的组件显示值和组件隐藏值对该查询子条件进行拼接得到下列树结构字符串形式的目标查询条件为:
"filterConditionEnum":"ANY":
{("filterConditionEnum":"ALL":"user_identity":"老板";"is_vip":"从未购买""city_type":"一线城市");
("filterConditionEnum":"ALL":"city_type":"一线城市")}
上述示例仅是举例说明,本公开对此不作限定。
在步骤303中,客户端获取当前待查询数据库的目标类型,并根据目标查询条件和目标类型生成数据库查询请求消息。
其中,该目标类型例如可以包括Mysql,Mongo,ES,Oracle,SqlServer等数据库类型,该数据库查询请求消息包括当前待查询数据库的目标类型和目标查询条件,该目标查询条件为将各个查询子条件按照预设格式拼接得到的查询条件。
在步骤304中,客户端向服务器发送数据库查询请求消息。
在步骤305中,服务器根据目标查询条件确定查询配置文件,查询配置文件用于表征查询子条件的组合关系。
在本步骤中,可以根据该树结构字符串中的第一JSON字段确定一个或者多个不同的查询条件集合,该查询条件集合中包括一个或者多个用户选择的查询子条件;针对每个查询条件集合,根据该树结构字符串确定该查询条件集合对应的第一JSON字段的字段值;针对目标JSON字段对应的目标查询条件集合,获取该目标查询条件集合中每个查询子条件对应的第二JSON字段,以及该第二JSON字段的字段值,该目标JSON字段为字段值为指定值的第一JSON字段;根据该第一JSON字段、该第一JSON字段的字段值、该第二JSON字段以及该第二JSON字段的字段值确定该查询配置文件。
示例地,以步骤302中得到的树结构字符串形式的目标查询条件:
"filterConditionEnum":"ANY":
{("filterConditionEnum":"ALL":"user_identity":"老板";"is_vip":"从未购买""city_type":"一线城市");
("filterConditionEnum":"ALL":"city_type":"一线城市")}为例,该目标查询条件中的第一JSON字段为"filterConditionEnum",并且包括三个字段"filterConditionEnum",因此该目标查询条件中包括三个查询条件集合,每个字段"filterConditionEnum"下分别对应一个查询条件集合,针对每个查询条件集合可以从目标查询条件对应的树结构字符串读取到每个字段"filterConditionEnum"分别对应的字段值为"ANY"或者"ALL",针对字段值为指定值"ALL"的第一JSON字段对应的目标查询条件集合,获取到该集合下每个查询子条件对应的第二JSON字段以及该第二JSON字段的字段值,该目标JSON字段为字段值为指定值的第一JSON字段;根据该第一JSON字段、该第一JSON字段的字段值、该第二JSON字段以及该第二JSON字段的字段值可以确定如下查询配置文件:
上述示例仅是举例说明,本公开对此不作限定。
在步骤306中,服务器根据目标类型解析查询配置文件,得到与目标类型的数据库对应的目标查询语句。
在本步骤中,服务器针对该查询配置文件中的每个指定字段,根据该目标类型的数据库语法确定该指定字段在该目标类型的数据库中对应的字段目标值;将该查询配置文件中该指定字段的字段值修改为该字段目标值后,得到该目标查询语句。
示例地,假设待查询数据库的目标类型为Mysql,并且Mysql语法中用“and”表示“且”,用“or”表示“或”,那么可以将上述查询配置文件中字段值为“ANY”的第一JSON字段的字段值修改为“or”,将上述查询配置文件中字段值为“ALL”的第一JSON字段的字段值修改为“and”后得到与Mysql数据库对应的目标目标查询语句,此处仅是举例说明,实际应用场景中,该指定字段可以包括任意的一个或者多个字段,本公开对此不作限定。
另外,为了提高服务器对查询配置文件的解析效率,在本公开中还可以根据该查询配置文件生成查询条件树,这样,可以按照该查询条件树的节点指向关系逐节点解析该查询配置文件,得到该目标查询语句。
示例地,图5是根据一示例性实施例示出的一种查询条件树的架构示意图,如图5所示,该查询条件树包括多个节点,该节点可以分为过滤节点(与查询配置文件中的字段“filterNodes”对应)和匹配节点(与查询配置文件中的字段“matchNodes”对应)两类,匹配节点是指与每个查询子条件对应的节点,如图5中的节点“user_identity包含老板”,“is_vip=从未购买”以及“city_type=一线城市”;过滤节点是指表征各个查询子条件的组合关系的节点,如图5中的节点“ANY=或”、“ALL=且”,这样,在解析该查询配置文件,得到与该目标类型的数据库对应的目标查询语句的过程中,可以基于该条件树的节点指向关系遍历各个节点对应的json字段,并通常情况下仅需将过滤节点对应的字段值进行替换即可,从而可以明显提高解析效率。
另外,可以按照以下方式根据该查询配置文件生成查询条件树:针对该查询配置文件中字段类型为指定字段类型的每个目标字段,将该目标字段对应的节点确定为父节点,将该目标字段下的预设字段对应的节点作为子节点,并将该父节点指向该子节点得到每个节点的指向关系;其中,该指定字段类型例如可以为表征查询子条件之间组合关系的关系字段,如"filterConditionEnum",之后可以根据每个目标字段的字段值、除该目标字段以外的其它预设字段对应的字段值以及该指向关系生成该查询条件树。
在步骤307中,服务器根据目标查询语句查询目标类型对应的数据库,得到查询响应结果。
在步骤308中,客户端接收服务器发送的查询响应结果。
采用上述方法,服务器可以接收客户端发送的当前待查询数据库的类型和用户选择的查询子条件的拼接组合,即该目标查询条件,该目标查询条件是按照预设统一格式进行拼接的,这样,服务器可以先就该目标查询条件生成一个统一的查询配置文件,之后可以根据数据库的目标类型,按照该数据库的目标类型对应的语法对该查询配置文件解析后得到与该目标类型的数据库对应的目标查询语句,从而可以实现对不同的数据库类型均可按照该方式进行数据库查询,无需针对不同的数据库单独开发查询代码,提高数据查询代码的开发效率。
另外,针对产品迭代时添加新的查询条件的情况下,用户在查询界面新增对应新的查询条件的界面组件后,后端也可以根据新增界面组件的条件属性确定新的查询条件与其它查询条件的组合关系,从而可以自动在查询配置文件中添加该新的查询条件,因此,本公开支持配置化新增或者删除条件项,提高开发效率,降低了查询代码与数据库的耦合率。
图6是根据一示例性实施例示出的一种数据库的查询装置的框图,应用于服务器,如图6所示,所述装置包括:
接收模块601,用于接收客户端发送的数据库查询请求消息,所述数据库查询请求消息包括当前待查询数据库的目标类型和目标查询条件,所述目标查询条件为将各个查询子条件按照预设格式拼接得到的查询条件;
确定模块602,用于根据所述目标查询条件确定查询配置文件,所述查询配置文件用于表征所述查询子条件的组合关系;
解析模块603,用于根据所述目标类型解析所述查询配置文件,得到与所述目标类型的数据库对应的目标查询语句;
查询模块604,用于根据所述目标查询语句查询所述目标类型对应的数据库,得到查询响应结果,并将所述查询响应结果发送至所述客户端。
图7是根据一示例性实施例示出的一种数据库的查询装置的框图,应用于客户端,如图7所示,所述装置包括:
第一获取模块701,用于获取目标组件对应的组件显示值和组件隐藏值,以及多个所述目标组件之间的组合关系,所述目标组件为用户选择的查询子条件对应的界面组件,不同的查询子条件对应不同的界面组件,所述组合关系用于表征多个所述查询子条件的拼接关系;
条件拼接模块702,用于根据所述组件显示值、所述组件隐藏值以及所述组合关系对所述查询子条件按照预设格式进行拼接得到目标查询条件;
第二获取模块703,用于获取当前待查询数据库的目标类型;
请求消息生成模块704,用于根据所述目标查询条件和所述目标类型生成数据库查询请求消息;
发送模块705,用于向服务器发送所述数据库查询请求消息,以便所述服务器根据所述数据库查询请求消息解析得到与所述目标类型的数据库对应的目标查询语句,并根据所述目标查询语句查询所述目标类型对应的数据库后,向所述客户端返回查询响应结果。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
采用上述装置,服务器可以接收客户端发送的当前待查询数据库的类型和用户选择的查询子条件的拼接组合,即该目标查询条件,该目标查询条件是按照预设统一格式进行拼接的,这样,服务器可以先就该目标查询条件生成一个统一的查询配置文件,之后可以根据数据库的目标类型,按照该数据库的目标类型对应的语法对该查询配置文件解析后得到与所述目标类型的数据库对应的目标查询语句,从而可以实现对不同的数据库类型均可按照该方式进行数据库查询,无需针对不同的数据库单独开发查询代码,提高数据查询代码的开发效率。
图8是根据一示例性实施例示出的一种电子设备800的框图。例如,该电子设备800可以包括客户端,如图8所示,该电子设备800可以包括:处理器801,存储器802。该电子设备800还可以包括多媒体组件803,输入/输出(I/O)接口804,以及通信组件805中的一者或多者。
其中,处理器801用于控制该电子设备800的整体操作,以完成上述的数据库的查询方法中的全部或部分步骤。存储器802用于存储各种类型的数据以支持在该电子设备800的操作,这些数据例如可以包括用于在该电子设备800上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器802可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件803可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器802或通过通信组件805发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口804为处理器801和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件805用于该电子设备800与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件805可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备800可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的数据库的查询方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的数据库的查询方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器802,上述程序指令可由电子设备800的处理器801执行以完成上述的数据库的查询方法。
图9是根据一示例性实施例示出的一种电子设备900的框图。例如,电子设备900可以被提供为一服务器。参照图9,电子设备900包括处理器922,其数量可以为一个或多个,以及存储器932,用于存储可由处理器922执行的计算机程序。存储器932中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器922可以被配置为执行该计算机程序,以执行上述的数据库的查询方法。
另外,电子设备900还可以包括电源组件926和通信组件950,该电源组件926可以被配置为执行电子设备900的电源管理,该通信组件950可以被配置为实现电子设备900的通信,例如,有线或无线通信。此外,该电子设备900还可以包括输入/输出(I/O)接口958。电子设备900可以操作基于存储在存储器932的操作系统,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的数据库的查询方法的步骤。例如,该非临时性计算机可读存储介质可以为上述包括程序指令的存储器932,上述程序指令可由电子设备900的处理器922执行以完成上述的数据库的查询方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的数据库的查询方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (12)
1.一种数据库的查询方法,其特征在于,应用于服务器,所述方法包括:
接收客户端发送的数据库查询请求消息,所述数据库查询请求消息包括当前待查询数据库的目标类型和目标查询条件,所述目标查询条件为将各个查询子条件按照预设格式拼接得到的查询条件;
根据所述目标查询条件确定查询配置文件,所述查询配置文件用于表征所述查询子条件的组合关系;
根据所述目标类型解析所述查询配置文件,得到与所述目标类型的数据库对应的目标查询语句;
根据所述目标查询语句查询所述目标类型对应的数据库,得到查询响应结果,并将所述查询响应结果发送至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述目标查询条件包括按照JSON格式拼接得到的树结构字符串,所述根据所述目标查询条件确定查询配置文件包括:
根据所述树结构字符串中的第一JSON字段确定一个或者多个不同的查询条件集合,所述查询条件集合中包括一个或者多个用户选择的查询子条件;
针对每个查询条件集合,根据所述树结构字符串确定该查询条件集合对应的第一JSON字段的字段值;
针对目标JSON字段对应的目标查询条件集合,获取所述目标查询条件集合中每个查询子条件对应的第二JSON字段,以及所述第二JSON字段的字段值,所述目标JSON字段为字段值为指定值的第一JSON字段;
根据所述第一JSON字段、所述第一JSON字段的字段值、所述第二JSON字段以及所述第二JSON字段的字段值确定所述查询配置文件。
3.根据权利要求1所述的方法,其特征在于,所述根据所述目标类型解析所述查询配置文件,得到与所述目标类型的数据库对应的目标查询语句包括:
针对所述查询配置文件中的每个指定字段,根据所述目标类型的数据库语法确定该指定字段在所述目标类型的数据库中对应的字段目标值;
将所述查询配置文件中所述指定字段的字段值修改为所述字段目标值后,得到所述目标查询语句。
4.根据权利要求1所述的方法,其特征在于,在所述根据所述目标类型解析所述查询配置文件,得到与所述目标类型的数据库对应的目标查询语句之前,所述方法还包括:
根据所述查询配置文件生成查询条件树;
所述根据所述目标类型解析所述查询配置文件,得到与所述目标类型的数据库对应的目标查询语句包括:
按照所述查询条件树的节点指向关系逐节点解析所述查询配置文件,得到所述目标查询语句。
5.根据权利要求4所述的方法,其特征在于,所述查询条件树包括多个节点,所述根据所述查询配置文件生成查询条件树包括:
针对所述查询配置文件中字段类型为指定字段类型的每个目标字段,将该目标字段对应的节点确定为父节点,将该目标字段下的预设字段对应的节点作为子节点,并将所述父节点指向所述子节点得到每个节点的指向关系;
根据每个目标字段的字段值、除所述目标字段以外的其它预设字段对应的字段值以及所述指向关系生成所述查询条件树。
6.一种数据库的查询方法,其特征在于,应用于客户端,所述方法包括:
获取目标组件对应的组件显示值和组件隐藏值,以及多个所述目标组件之间的组合关系,所述目标组件为用户选择的查询子条件对应的界面组件,不同的查询子条件对应不同的界面组件,所述组合关系用于表征多个所述查询子条件的拼接关系;
根据所述组件显示值、所述组件隐藏值以及所述组合关系对所述查询子条件按照预设格式进行拼接得到目标查询条件;
获取当前待查询数据库的目标类型;
根据所述目标查询条件和所述目标类型生成数据库查询请求消息;
向服务器发送所述数据库查询请求消息,以便所述服务器根据所述数据库查询请求消息解析得到与所述目标类型的数据库对应的目标查询语句,并根据所述目标查询语句查询所述目标类型对应的数据库后,向所述客户端返回查询响应结果。
7.根据权利要求6所述的方法,其特征在于,所述预设格式包括JSON格式,所述JSON格式包括多个预设JSON字段;所述根据所述组件显示值、所述组件隐藏值以及所述组合关系对所述查询子条件按照预设格式进行拼接得到目标查询条件包括:
根据所述组合关系从多个所述预设JSON字段中确定每个查询条件集合分别对应的第一JSON字段,以及每个第一JSON字段的字段值,所述查询条件集合中包括一个或者多个查询子条件;
从多个所述预设JSON字段中确定每个目标组件的组件显示值和组件隐藏值分别对应的第二JSON字段;
根据所述第一JSON字段、每个第一JSON字段的字段值、所述第二JSON字段、以及每个目标组件的组件显示值和组件隐藏值对所述查询子条件进行拼接得到所述目标查询条件。
8.根据权利要求6或7所述的方法,其特征在于,所述目标查询条件包括树结构字符串。
9.一种数据库的查询装置,其特征在于,应用于服务器,所述装置包括:
接收模块,用于接收客户端发送的数据库查询请求消息,所述数据库查询请求消息包括当前待查询数据库的目标类型和目标查询条件,所述目标查询条件为将各个查询子条件按照预设格式拼接得到的查询条件;
确定模块,用于根据所述目标查询条件确定查询配置文件,所述查询配置文件用于表征所述查询子条件的组合关系;
解析模块,用于根据所述目标类型解析所述查询配置文件,得到与所述目标类型的数据库对应的目标查询语句;
查询模块,用于根据所述目标查询语句查询所述目标类型对应的数据库,得到查询响应结果,并将所述查询响应结果发送至所述客户端。
10.一种数据库的查询装置,其特征在于,应用于客户端,所述装置包括:
第一获取模块,用于获取目标组件对应的组件显示值和组件隐藏值,以及多个所述目标组件之间的组合关系,所述目标组件为用户选择的查询子条件对应的界面组件,不同的查询子条件对应不同的界面组件,所述组合关系用于表征多个所述查询子条件的拼接关系;
条件拼接模块,用于根据所述组件显示值、所述组件隐藏值以及所述组合关系对所述查询子条件按照预设格式进行拼接得到目标查询条件;
第二获取模块,用于获取当前待查询数据库的目标类型;
请求消息生成模块,用于根据所述目标查询条件和所述目标类型生成数据库查询请求消息;
发送模块,用于向服务器发送所述数据库查询请求消息,以便所述服务器根据所述数据库查询请求消息解析得到与所述目标类型的数据库对应的目标查询语句,并根据所述目标查询语句查询所述目标类型对应的数据库后,向所述客户端返回查询响应结果。
11.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-5中任一项所述方法的步骤,或者,该程序被处理器执行时实现权利要求6-8中任一项所述方法的步骤。
12.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-5中任一项所述方法的步骤;或者,
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求6-8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210639659.6A CN114996554A (zh) | 2022-06-07 | 2022-06-07 | 数据库的查询方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210639659.6A CN114996554A (zh) | 2022-06-07 | 2022-06-07 | 数据库的查询方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114996554A true CN114996554A (zh) | 2022-09-02 |
Family
ID=83032608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210639659.6A Pending CN114996554A (zh) | 2022-06-07 | 2022-06-07 | 数据库的查询方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114996554A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117708304A (zh) * | 2024-02-01 | 2024-03-15 | 浙江大华技术股份有限公司 | 数据库问答方法、设备及存储介质 |
-
2022
- 2022-06-07 CN CN202210639659.6A patent/CN114996554A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117708304A (zh) * | 2024-02-01 | 2024-03-15 | 浙江大华技术股份有限公司 | 数据库问答方法、设备及存储介质 |
CN117708304B (zh) * | 2024-02-01 | 2024-05-28 | 浙江大华技术股份有限公司 | 数据库问答方法、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8271940B2 (en) | System and method for dynamic generation and customization of web service client applications for terminals | |
KR101283019B1 (ko) | SaaS 어플리케이션 생성 방법 및 이를 실행하는 어플리케이션 생성 서버 | |
TW201439792A (zh) | 資料庫訪問系統及方法 | |
CN112040013B (zh) | 用于页面路由的方法、计算设备和计算机存储介质 | |
CN110555030A (zh) | 一种sql语句的处理方法和装置 | |
CN114036425A (zh) | 页面访问方法、客户端、服务端及系统 | |
US8782470B2 (en) | Generation of test data for web service-based test automation and semi-automated test data categorization | |
CN113760948A (zh) | 一种数据查询的方法及装置 | |
CN113760722A (zh) | 测试系统和测试方法 | |
CN114996554A (zh) | 数据库的查询方法、装置、存储介质及电子设备 | |
US10372760B2 (en) | Building queries directed to objects hosted on clouds | |
CN108959294B (zh) | 一种访问搜索引擎的方法和装置 | |
CN110018835B (zh) | Yang模型配置数据处理方法及装置、终端设备及存储介质 | |
US9817891B1 (en) | System, method, and computer program for creating metadata-based search queries | |
CN108694172B (zh) | 信息输出方法和装置 | |
CN113760987A (zh) | 数据处理方法和数据处理平台 | |
CN113055410A (zh) | 云资源管理方法、装置、设备、系统及可读存储介质 | |
US11687593B2 (en) | Query generation using natural language input | |
US10275264B1 (en) | Configuration management of remote sources using activator fields | |
KR102555258B1 (ko) | 사용자 인식방법, 장치, 저장매체 및 전자기기 | |
CN115408009A (zh) | 一种代码文件生成方法、装置、设备和存储介质 | |
CN113031928A (zh) | web系统生成方法及装置、电子设备和计算机可读存储介质 | |
CN112269664A (zh) | 云服务器资源管理方法、装置及系统 | |
CN116756727B (zh) | 一种数据权限控制方法、装置、电子设备和存储介质 | |
CN114500002B (zh) | 一种基于ldap的集群账号分配方法及系统 |
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 |