一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于通用查询结构的SQL查询语句生成方法、装置及设备与流程

2022-06-01 02:29:51 来源:中国专利 TAG:
基于通用查询结构的sql查询语句生成方法、装置及设备
技术领域
:1.本技术属于sql查询语句生成
技术领域
:,尤其涉及一种基于通用查询结构的sql查询语句生成方法、装置、电子设备及计算机可读存储介质。
背景技术
::2.表格数据是信息在经过人为整理、归纳后的一种高效的结构化表达形式,其信息的价值、密度和质量高于普通的文字文本。当用户去查询表格中的内容时,需要肉眼去从表格中筛选满足条件的数据,准确率和效率都较低。因此通过sql语句查询数据是业务中不可获取的,现有的生成的sql的技术主要是mybatis、hibernate等数据持久化的框架。3.通过数据持久化的框架生成sql查询语句,都存在一些不可避免的缺点。首先,灵活程度不够。hibernate框架无法根据不同的条件组装不同的sql,无法满足大部分的业务场景。其次,复杂sql支持不够。hibernate框架对多表关联和复杂的sql查询支持较差,需要自己写sql,返回后,需要自己将数据封装为pojo。最后,数据库移植麻烦。mybatis框架需要根据不同的数据库类型适配不同的方言问题,需要不断的调整sql。4.因此,如何生成更加满足业务需求的sql查询语句是本领域技术人员亟需解决的技术问题。技术实现要素:5.本技术实施例提供一种基于通用查询结构的sql查询语句生成方法、装置、电子设备及计算机可读存储介质,能够生成更加满足业务需求的sql查询语句。6.第一方面,本技术实施例提供一种基于通用查询结构的sql查询语句生成方法,包括:7.将待生成的目标sql查询语句拆解为不同种类的指令对象;8.拼接不同种类的指令对象,得到目标sql查询语句各部分的指令信息;9.将各部分的指令信息进行拼接,生成目标sql查询语句。10.可选的,将各部分的指令信息进行拼接,生成目标sql查询语句,包括:11.获取数据库类型以及拼接好的sqldto结构;12.获取selectdtos,拼接select语句;13.在无嵌套查询结构的情况下,拼接表名;14.依次拼接查询条件和分组排序条件;15.在无联合查询的情况下,生成目标sql查询语句。16.可选的,包括:17.select语句中field字段的拼接需要根据字段类型拼接出不同的格式;18.其中,字段类型包括string类型、default类型、function类型及operation类型。19.可选的,还包括:20.根据数据库类型,适配对应的方言。21.可选的,还包括:22.在有嵌套查询结构的情况下,拼接嵌套查询结构。23.可选的,还包括:24.在有联合查询的情况下,再次拼接sqldto结构,以及连接条件和筛选条件。25.可选的,将各部分的指令信息进行拼接,生成目标sql查询语句,包括:26.将各部分的指令信息存放在不同种类的指令对象中,生成目标sql查询语句。27.第二方面,本技术实施例提供了一种基于通用查询结构的sql查询语句生成装置,包括:28.语句拆解模块,用于将待生成的目标sql查询语句拆解为不同种类的指令对象;29.指令对象拼接模块,用于拼接不同种类的指令对象,得到目标sql查询语句各部分的指令信息;30.sql查询语句生成模块,用于将各部分的指令信息进行拼接,生成目标sql查询语句。31.可选的,sql查询语句生成模块,用于:获取数据库类型以及拼接好的sqldto结构;获取selectdtos,拼接select语句;在无嵌套查询结构的情况下,拼接表名;依次拼接查询条件和分组排序条件;在无联合查询的情况下,生成目标sql查询语句。32.可选的,包括:33.select语句中field字段的拼接需要根据字段类型拼接出不同的格式;34.其中,字段类型包括string类型、default类型、function类型及operation类型。35.可选的,还包括:36.方言适配模块,用于根据数据库类型,适配对应的方言。37.可选的,还包括:38.嵌套查询结构拼接模块,用于在有嵌套查询结构的情况下,拼接嵌套查询结构。39.可选的,还包括:40.sqldto结构拼接模块,用于在有联合查询的情况下,再次拼接sqldto结构,以及连接条件和筛选条件。41.可选的,sql查询语句生成模块,用于:将各部分的指令信息存放在不同种类的指令对象中,生成目标sql查询语句。42.第三方面,本技术实施例提供了一种电子设备,电子设备包括:处理器以及存储有计算机程序指令的存储器;43.处理器执行计算机程序指令时实现如第一方面所示的基于通用查询结构的sql查询语句生成方法。44.第四方面,本技术实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如第一方面所示的基于通用查询结构的sql查询语句生成方法。45.本技术实施例的基于通用查询结构的sql查询语句生成方法、装置、电子设备及计算机可读存储介质,能够生成更加满足业务需求的sql查询语句。46.该基于通用查询结构的sql查询语句生成方法,将待生成的目标sql查询语句拆解为不同种类的指令对象;先是通过拼接不同种类的指令对象,得到目标sql查询语句各部分的指令信息;然后将各部分的指令信息进行拼接,故能够生成更加满足业务需求的sql查询语句。附图说明47.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。48.图1是本技术一个实施例提供的基于通用查询结构的sql查询语句生成方法的流程示意图;49.图2是本技术一个实施例提供的基于通用查询结构的sql查询语句生成方法的流程示意图;50.图3是本技术一个实施例提供的基于通用查询结构的sql查询语句生成装置的结构示意图;51.图4是本技术一个实施例提供的电子设备的结构示意图。具体实施方式52.下面将详细描述本技术的各个方面的特征和示例性实施例,为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本技术进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本技术,而不是限定本技术。对于本领域技术人员来说,本技术可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本技术的示例来提供对本技术更好的理解。53.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。54.现有的生成的sql的技术主要是mybatis、hibernate等数据持久化的框架。通过数据持久化的框架生成sql查询语句,都存在一些不可避免的缺点。首先,灵活程度不够。hibernate框架无法根据不同的条件组装不同的sql,无法满足大部分的业务场景。其次,复杂sql支持不够。hibernate框架对多表关联和复杂的sql查询支持较差,需要自己写sql,返回后,需要自己将数据封装为pojo。最后,数据库移植麻烦。mybatis框架需要根据不同的数据库类型适配不同的方言问题,需要不断的调整sql。55.为了解决现有技术问题,本技术实施例提供了一种基于通用查询结构的sql查询语句生成方法、装置、电子设备及计算机可读存储介质。下面首先对本技术实施例所提供的基于通用查询结构的sql查询语句生成方法进行介绍。56.图1示出了本技术一个实施例提供的基于通用查询结构的sql查询语句生成方法的流程示意图。如图1所示,该基于通用查询结构的sql查询语句生成方法包括:57.s101、将待生成的目标sql查询语句拆解为不同种类的指令对象。58.s102、拼接不同种类的指令对象,得到目标sql查询语句各部分的指令信息。59.s103、将各部分的指令信息进行拼接,生成目标sql查询语句。60.sql查询语句是由不同种类的指令构成的,包括select查询指令,where条件指令,groupby分组指令,函数指令,关联表查询指令等等,其中比较重要的也就是常用的就是select查询指令,where条件指令。61.本方案提供的通用查询结构的思想就是将sql语句拆解为不同种类的指令对象,通过拼接不同种类的指令对象得到sql各部分的指令信息,最后将这些指令信息拼接成完整的sql语句,得到可执行的sql。因此生成sql的过程就转换为生成标准的通用结构的过程,将想要生成的sql的各部分指令信息存放在结构的不同指令对象中,就可以得到想要的sql。62.在一个实施例中,将各部分的指令信息进行拼接,生成目标sql查询语句,包括:63.获取数据库类型以及拼接好的sqldto结构;64.获取selectdtos,拼接select语句;65.在无嵌套查询结构的情况下,拼接表名;66.依次拼接查询条件和分组排序条件;67.在无联合查询的情况下,生成目标sql查询语句。68.在一个实施例中,select语句中field字段的拼接需要根据字段类型拼接出不同的格式;69.其中,字段类型包括string类型、default类型、function类型及operation类型。70.在一个实施例中,该方法还包括:根据数据库类型,适配对应的方言。71.在一个实施例中,该方法还包括:在有嵌套查询结构的情况下,拼接嵌套查询结构。72.在一个实施例中,该方法还包括:在有联合查询的情况下,再次拼接sqldto结构,以及连接条件和筛选条件。73.在一个实施例中,将各部分的指令信息进行拼接,生成目标sql查询语句,包括:74.将各部分的指令信息存放在不同种类的指令对象中,生成目标sql查询语句。75.为了对上述实施例进行具体说明,下面结合图2进行说明。如流程图2所示,生成sql具体步骤如下:76.(1)获取数据库类型以及拼接好的sqldto结构;其中,sqldto结构可如表1所示:77.表178.[0079][0080](2)获取selectdtos,拼接select语句,"selectfield1asfieldname1,field2asfieldname2..."。其中,field字段的拼接需要根据字段类型拼接出不同的格式,具体有四种类型:[0081](2.1)string类型,添加引号表示sql中的常量。例如:'全部受众'as"受众";[0082](2.2)default类型,默认类型,不作特殊处理。例如:companyas"企业";[0083](2.3)function类型,函数类型,比较复杂,可以拼接各种函数用于复杂计算场景或时间处理。[0084]例如:转换时间格式用到to_char,to_date两种函数。to_char(to_date(period,'yyyymmdd'),'yyyymm');[0085](2.4)operation类型,运算类型,四则运算等计算的sql字段。例如:t1.profit t2.profitas"总利润";[0086]同时拼接字段时会拿到数据库类型,用于适配不同数据库的方言;[0087](3)拼接表名,或嵌套查询结构。如果有表名,直接拼接表名,fromtable1。否则,拼接嵌套查询结构,内部的sqldto;[0088](4)拼接查询条件。wherefield1in('xxx'),field1也是通过拼接fielddto得到,可以是函数类型,默认类型;[0089](5)拼接分组排序条件。groupbyfield1orderbyfield1;[0090](6)判断是否有联合查询。若有联合查询,则需要再次拼接sqldto结构,以及连接条件,筛选条件等;[0091](7)生成得到可执行sql查询语句。[0092]示例性地,生成得到的sql查询语句如下:[0093]输出sql示例(postgresql数据库)[0094]select[0095]to_char(to_date(period,'yyyymmdd'),'yyyymm')as"期间",[0096]'全部电子产品'as"电子产品",[0097]'全部受众'as"受众",[0098]companyas"企业",[0099]sum(month_tired_income)as"月累收入"[0100]from[0101]relation_table_1[0102]where[0103]to_date(period,'yyyymmdd')in([0104]to_date('20210331','yyyymmdd'))[0105]andelectronic_productsin('smartphone','tablet_pc','notebook_computer')[0106]andaudiencesin('docter','teacher','students')[0107]andcompanyin('apple')[0108]andmonth_tired_income!=0[0109]andmonth_tired_incomeisnotnull[0110]groupby[0111]to_char(to_date(period,'yyyymmdd'),'yyyymm'),[0112]company[0113]本技术方案提供了一种通用的查询结构,通过该结构可以转换标准的可执行sql语句。在具体的业务场景中,可以将数据表中的列的映射关系转换成通用结构,以实现业务中各种查询数据的场景,包括普通取数,分组排序,四则运算,嵌套查询,关联查询以及自定义函数等场景。同时该结构的数据库移植性很强,可以适应各种关系型数据库(oracle,mysql,postgresql(gp)),应用场景广泛,性能较好。[0114]通过分指令拼接sql的方式,可以拼接出符合多种业务场景的复杂sql语句,包括函数,运算,关联查询等等;该结构在各种关系型数据库通用,适配不同数据库的方言问题;易扩展,结构通用就可以在结构解析的时候去适配其他数据库。[0115]图3是本技术一个实施例提供的基于通用查询结构的sql查询语句生成装置的结构示意图,如图3所示,该基于通用查询结构的sql查询语句生成装置,包括:[0116]语句拆解模块301,用于将待生成的目标sql查询语句拆解为不同种类的指令对象;[0117]指令对象拼接模块302,用于拼接不同种类的指令对象,得到目标sql查询语句各部分的指令信息;[0118]sql查询语句生成模块303,用于将各部分的指令信息进行拼接,生成目标sql查询语句。[0119]在一个实施例中,sql查询语句生成模块303,用于:获取数据库类型以及拼接好的sqldto结构;获取selectdtos,拼接select语句;在无嵌套查询结构的情况下,拼接表名;依次拼接查询条件和分组排序条件;在无联合查询的情况下,生成目标sql查询语句。[0120]在一个实施例中,select语句中field字段的拼接需要根据字段类型拼接出不同的格式;其中,字段类型包括string类型、default类型、function类型及operation类型。[0121]在一个实施例中,该装置还包括:方言适配模块,用于根据数据库类型,适配对应的方言。[0122]在一个实施例中,该装置还包括:[0123]嵌套查询结构拼接模块,用于在有嵌套查询结构的情况下,拼接嵌套查询结构。[0124]在一个实施例中,该装置还包括:[0125]sqldto结构拼接模块,用于在有联合查询的情况下,再次拼接sqldto结构,以及连接条件和筛选条件。[0126]在一个实施例中,sql查询语句生成模块303,用于:将各部分的指令信息存放在不同种类的指令对象中,生成目标sql查询语句。[0127]图3所示装置中的各个模块/单元具有实现图1中各个步骤的功能,并能达到其相应的技术效果,为简洁描述,在此不再赘述。[0128]图4示出了本技术实施例提供的电子设备的结构示意图。[0129]电子设备可以包括处理器401以及存储有计算机程序指令的存储器402。[0130]具体地,上述处理器401可以包括中央处理器(cpu),或者特定集成电路(applicationspecificintegratedcircuit,asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。[0131]存储器402可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器402可包括硬盘驱动器(harddiskdrive,hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universalserialbus,usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器402可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器402可在电子设备的内部或外部。在特定实施例中,存储器402可以是非易失性固态存储器。[0132]在一个实施例中,存储器402可以是只读存储器(readonlymemory,rom)。在一个实施例中,该rom可以是掩模编程的rom、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、电可改写rom(earom)或闪存或者两个或更多个以上这些的组合。[0133]处理器401通过读取并执行存储器402中存储的计算机程序指令,以实现上述实施例中的任意一种基于通用查询结构的sql查询语句生成方法。[0134]在一个示例中,电子设备还可包括通信接口403和总线410。其中,如图4所示,处理器401、存储器402、通信接口403通过总线410连接并完成相互间的通信。[0135]通信接口403,主要用于实现本技术实施例中各模块、装置、单元和/或设备之间的通信。[0136]总线410包括硬件、软件或两者,将电子设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(agp)或其他图形总线、增强工业标准架构(eisa)总线、前端总线(fsb)、超传输(ht)互连、工业标准架构(isa)总线、无限带宽互连、低引脚数(lpc)总线、存储器总线、微信道架构(mca)总线、外围组件互连(pci)总线、pci-express(pci-x)总线、串行高级技术附件(sata)总线、视频电子标准协会局部(vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线410可包括一个或多个总线。尽管本技术实施例描述和示出了特定的总线,但本技术考虑任何合适的总线或互连。[0137]另外,结合上述实施例中的基于通用查询结构的sql查询语句生成方法,本技术实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种基于通用查询结构的sql查询语句生成方法。[0138]需要明确的是,本技术并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本技术的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本技术的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。[0139]以上所述的结构框图中所示的功能模块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本技术的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。[0140]还需要说明的是,本技术中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本技术不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。[0141]上面参考根据本技术的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本技术的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。[0142]以上所述,仅为本技术的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献