发明内容
为了克服上述技术缺陷,本发明提供一种数据查询方法、计算机设备以及存储介质,旨在提供一种更为有效的数据查询方法。
为了解决上述问题,本发明按以下技术方案予以实现的:
第一方面,本发明提供的一种数据查询方法,所述方法包括:
接收数据查询请求;
通过解析所述数据查询请求,获得数据请求类型;
获取与所述数据请求类型相对应的若干字段属性,其中,所述字段属性与所述数据请求类型为预设的映射关系;
遍历每一所述字段属性,对所述字段属性的属性类型进行判断,其中,所述属性类型包括原子属性和非原子属性;
若所述字段属性为非原子属性,通过递归算法获取与该非原子属性对应的原子属性,并储存到一变量中;
若所述字段属性为原子属性,该原子属性储存到所述变量中;
将所述变量按照预设的语法格式构建查询语法;
执行所述查询语法,获得数据查询结果。
进一步的,所述将所述变量按照预设的语法格式构建查询语法的步骤,包括:
将所述变量按照GraphQL的语法格式构建查询语法。
进一步的,将所述变量按照GraphQL的语法格式构建查询语法的步骤,包括:
将所述变量按照GraphQL的语法格式,进行数据的序列化,构建查询语法。
进一步的,所述执行所述查询语法,获得数据查询结果的步骤,包括:
通过所述查询语法发出API请求,获得数据查询结果。
进一步的,所述接收数据查询请求的步骤,之前还包括:
对服务器进行初始化。
进一步的,所述通过解析所述数据查询请求,获得数据请求类型的步骤,之前还包括:
预先存储若干数据请求类型。
第二方面,本发明提供的一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器上存储有在所述处理器上运行的数据查询程序,所述数据查询程序被所述处理器执行时实现如第一方面所述的数据查询方法的步骤。
第三方面,本发明提供的一种存储介质,所述存储介质是计算机可读存储介质,所述存储介质上存储有数据查询程序,所述数据查询程序被处理器运行时执行如第一方面所述的数据查询方法的步骤。
相对于现有技术,本发明的有益效果为:
本发明公开了一种数据查询方法、计算机设备以及存储介质;其中,数据查询方法中,通过解析客户端发出的数据查询请求,获得对应的数据请求类型,由于服务器预设了与数据请求类型相对应的字段属性,通过递归算法深度遍历每一字段属性,获得字段属性下的所有原子属性,并生成一项查询语法,这将减轻开发人员的工作量,省去一些类型及字段配置的工作量,开发人员只需要配置查询类型即可完成查询;后期若有数据结构的改动,维护查询语法的成本也很低。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
现有技术中,一般采用手写查询语法或者使用Relay、apollo这些框架来实现查询语法。以手写查询语法为例,
该示例中,学生列表为服务器预设的数据请求类型,“姓名”、“职位”这两个直接属于数据请求类型“学生列表”下的字段属性,属于原子属性。
“所属部门”、“同事”这2个字段属性,其下属属性还有“名称”、“ID”等原子属性,“所属部门”、“同事”属于非原子属性;“名称”为非原子属性“所属部门”下的下属属性。
现有技术下,通过手写查询语法来获取相关数据,需要使用人员熟悉后端的API接口信息,同时将需要的字段属性配置到数据请求类型中,工作量相当复杂繁琐,后期若有数据结构改动,维护查询语法的成本也高。
实施例1
本实施例提供了一种数据查询方法,参考图1,包括以下步骤:
S10、接收数据查询请求;
本实施例以服务器提供用户界面来让用户进行页面操作为例进行说明。
具体的,在客户端发出数据查询请求前,先对请求服务进行初始化,浏览器通过定义好的请求服务工厂方法Factory来创建每个数据查询请求的实例。
客户端在网页浏览器打开网页程序的网址(服务器提供的用户界面),网页浏览器会获取网页信息,执行里面的html、css、script指令,渲染网页给用户查看访问。在执行script的时候,会通过请求的工厂方法创建学生、教师、部门等一系列的列表、详情、新增、删除等普通常规操作的请求实例,方便开发人员后面调用,减轻开发人员重复的工作量。
系统进行数据的初始化,获取必备的信息,例如系统配置,系统时间,系统字典等系统数据信息,同时通过后端程序员提供的API接口获取预设的语法文档。
S20、通过解析所述数据查询请求,获得数据请求类型;
预先存储若干数据请求类型。
示例性的,服务器的网址中预设了“学生管理”的按钮,客户端点击“学生管理”,即为客户端发起数据查询请求“学生管理”,触发程序发起请求学生列表的数据,此时服务器接收到数据请求类型“学生列表”。
S30、获取与所述数据请求类型相对应的若干字段属性,其中,所述字段属性与所述数据请求类型为预设的映射关系;
示例性的,服务器中预设了数据请求类型“学生列表”的字段属性有“姓名”、“职位”、“所属部门”等字段属性。
S40、遍历每一所述字段属性,对所述字段属性的属性类型进行判断,其中,所述属性类型包括原子属性和非原子属性;
S50、若所述字段属性为非原子属性,通过递归算法获取与该非原子属性对应的原子属性,并储存到一变量中;
S60、若所述字段属性为原子属性,该原子属性储存到所述变量中。
具体的,字段属性的属性类型包括原子属性和非原子属性。服务器遍历到某一字段属性时,会判断字段属性的类型,如果该字段属性没有子属性,即该字段属性为最终的查询属性(原子属性),服务器将最终的查询属性储存到一变量中,然后继续遍历下一个字段属性。
示例性的,服务器遍历到“所属部门”时,会判断“所属部门”拥有子属性“名称”,服务器会用递归算法,对“所属部门”继续遍历其子属性,直至判断所有子属性为最终的查询属性,停止对该字段属性“所属部门”的遍历,将所属部门{名称}返回存储到所述变量中。
S70、将所述变量按照预设的语法格式构建查询语法;
S80、执行所述查询语法,获得数据查询结果。
在一些实施例中,将所述变量按照GraphQL的语法格式,进行数据的序列化,构建查询语法。
具体的,遍历完成后,生成的变量信息,依照GraphQL的语法格式,进行数据的序列化,完成了查询语法的构建。执行所述查询语法,所述查询语法发出API请求来请求数据,获得数据查询结果,即将数据查询结果供客户端查看,完成整个查询的流程。
示例性的,生成的变量信息序列化成:学生列表{姓名,职位,所属部门{名称},同事{ID,姓名,职位}},即构建了查询语法“学生列表”,查询语法发出API请求来请求“学生列表”的数据,获取到信息,展示到网页页面上,供用户查看。
更具体的,当需求发生改变时,例如在数据查询请求“学生列表”中,当实际需求发生变化,已经不需要“学生列表{职位}”这一原子属性,此时只需修改数据请求类型“学生列表”中的字段属性与数据请求类型的映射关系,无需修改查询语法,即可得到改变需求后的查询结果;当有其他多个数据查询请求都含有需修改的字段属性时,也无需修改查询语法。若使用手写查询语法或者使用Relay、apollo这些框架来实现查询语法,若有数据结构的改动,每一查询语法都需要修改,工作量极大,而且容易出错。
实施例2
本发明实施例提供一种计算机设备,包括处理器与存储器,所述存储器用于存储计算机程序;所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现本发明实施例1提供的数据查询方法。
应当理解的是,处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
实施例3
本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,使所述处理器实现本发明实施例1提供的数据查询方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读存储介质上,计算机可读存储介质可以包括计算机可读存储介质(或非暂时性介质)和通信介质(或暂时性介质)。
如本领域普通技术人员公知的,术语计算机可读存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机可读存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
示例性的,所述计算机可读存储介质可以是前述实施例所述的网管设备的内部存储单元,例如所述网管设备的硬盘或内存。所述计算机可读存储介质也可以是所述网管设备的外部存储设备,例如所述网管设备上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。