一种基于JOOQ框架自动生成SQL查询的方法及系统技术方案

技术编号:36856256 阅读:19 留言:0更新日期:2023-03-15 17:50
本发明专利技术涉及查询技术领域,特别是一种基于JOOQ框架自动生成SQL查询的方法及系统,方法包括以下步骤:获取数据表中的数据结构,根据数据结构找出主表以及从表,对主表以及从表构建关联关系;分别定义查询条件字段的最大集合以及过滤条件字段的最大集合,并将查询条件字段的最大集合以及过滤条件字段的最大集合展示在查询的界面中;获取用户的查询条件以及过滤条件,根据查询条件以及过滤条件对数据表做查找运算,得到数据表;根据SQL的语法规范以及JOOQ的使用语法,动态地组装出本次查询需要的SQL;将SQL发送至对应的数据库中,根据查询条件查询出需要的数据。根据指定的查询条件以及过滤条件,反推关联所需要的数据表,动态地生成所需要最少关联的表。成所需要最少关联的表。成所需要最少关联的表。

【技术实现步骤摘要】
一种基于JOOQ框架自动生成SQL查询的方法及系统


[0001]本专利技术涉及查询
,特别是一种基于JOOQ框架自动生成SQL查询的方法及系统。

技术介绍

[0002]JOOQ框架可以根据数据库的表结构自动生成数据库表字段对应代码的反向工程能力,并且支持通过代码来生成查询的SQL。当进行一个列表的查询时,在指定查询条件时,需要手工编写对字段进行判空的代码,存在大量重复字段的判空逻辑代码,造成重复工作,编码效率不高,如果需要动态地判断需要关联的表,也需要手工编码来实现要关联哪些表,不够灵活。
[0003]例如在一个订单列表的页面,列表页面上显示了订单信息,订单对应的商品信息,订单对应的付款信息,分别来源于商品、订单、付款单3张表,同时支持商品名称,订单金额,付款状态3个查询的过滤条件。而现有的SQL查询语句在生成时,需要人工判断某个当前查询中的过滤条件,然后再进行手工编写SQL的表关联逻辑,实现多表的关联查询。

技术实现思路

[0004]针对上述缺陷,本专利技术的目的在于提出一种基于JOOQ框架自动生成SQL查询的方法及系统,实现多表查询的自动关联,提高自动化程度。
[0005]为达此目的,本专利技术采用以下技术方案:一种基于JOOQ框架自动生成SQL查询的方法包括以下步骤:步骤S1:获取数据表中的数据结构,根据数据结构找出主表以及从表,对主表以及从表构建关联关系;步骤S2:分别定义查询条件字段的最大集合以及过滤条件字段的最大集合,并将查询条件字段的最大集合以及过滤条件字段的最大集合展示在查询的界面中;步骤S3:获取用户的查询条件以及过滤条件,根据查询条件以及过滤条件对数据表做查找运算,得到本次查询所使用的数据表;步骤S4:根据SQL的语法规范以及JOOQ的使用语法,动态地组装出本次查询需要的SQL;将SQL发送至对应的数据表中,根据查询条件查询出需要的数据。
[0006]优选的,所述步骤S1的具体过程如下:根据数据结构,找出返回的数据结构的顶层的数据表,以该数据表作为主表,数据结构中除主表以外的数据表为从表;将从表的主键与主表的外键进行关联,确定主表与从表的关联关系。
[0007]优选的,所述查找运算包括并与运算以及或运算;所述步骤S3的具体过程如下:所述查询条件所对应的数据表以及过滤条件所对应的数据表进行或运算,得到结
果表集;通过结果表集与其他数据表进行与运算,得到本次查询所使用的数据表。
[0008]优选的,在执行步骤S3前,还需要进行如下操作:对查询条件以及过滤条件进行判空处理,若查询条件以及过滤条件均为空值,则不执行步骤S3。
[0009]一种基于JOOQ框架自动生成SQL查询的系统,使用所述一种基于JOOQ框架自动生成SQL查询的方法,包括:关联模块、定义模块、找表模块以及查询模块;所述关联模块用于获取数据表中的数据结构,根据数据结构找出主表以及从表,对主表以及从表构建关联关系;所述定义模块用于分别定义查询条件字段的最大集合以及过滤条件字段的最大集合,并将查询条件字段的最大集合以及过滤条件字段的最大集合展示在查询的界面中;所述找表模块用于获取用户的查询条件以及过滤条件,根据查询条件以及过滤条件对数据表做查找运算,得到本次查询所使用的数据表;所述查询模块用于根据SQL的语法规范以及JOOQ的使用语法,动态地组装出本次查询需要的SQL;将SQL发送至对应的数据表中,根据查询条件查询出需要的数据。
[0010]优选的,所述关联模块包括结构子模块和外键连接子模块;所述结构子模块用于根据数据结构,找出返回的数据结构的顶层的数据表,以该数据表作为主表,数据结构中除主表以外的数据表为从表;所述外键连接子模块用于将从表的主键与主表的外键进行关联,确定主表与从表的关联关系。
[0011]优选的,所述找表模块包括与运算模块以及或运算模块;所述或运算模块用于所述查询条件所对应的数据表以及过滤条件所对应的数据表进行或运算,得到结果表集;所述与运算模块用于通过结果表集与其他数据表进行与运算,得到本次查询所使用的数据表。
[0012]优选的,还包括判空模块,所述判空模块用于对查询条件以及过滤条件进行判空处理,若查询条件以及过滤条件均为空值,则调用所述找表模块。
[0013]上述技术方案中的一个技术方案具有如下优点或有益效果:本专利技术中根据指定的查询条件以及过滤条件,反推关联所需要的数据表,动态地生成所需要最少关联的表,减少大量判空的代码,提高编码的效率,让代码量更简洁,让代码更容易维护,后期维护成本更低。
附图说明
[0014]图1是本专利技术方法的一个实施例的流程图。
[0015]图2是本专利技术系统的一个实施例的结构示意图。
具体实施方式
[0016]下面详细描述本专利技术的实施方式,实施方式的示例在附图中示出,其中,相同或类
似的标号自始至终表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本专利技术,而不能理解为对本专利技术的限制。
[0017]在本专利技术的实施方式的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本专利技术的实施方式的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0018]此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本专利技术的描述中,除非另有说明,“多个”的含义是两个或两个以上。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本专利技术中的具体含义。
[0019]如图1~2所示,一种基于JOOQ框架自动生成SQL查询的方法包括以下步骤:步骤S1:获取数据表中的数据结构,根据数据结构找出主表以及从表,对主表以及从表构建关联关系;步骤S2:分别定义查询条件字段的最大集合以及过滤条件字段的最大集合,并将查询条件字段的最大集合以及过滤条件字段的最大集合展示在查询的界面中;步骤S3:获取用户的查询条件以及过滤条件,根据查询条件以及过滤条件对数据表做查找运算,得到本次查询所使用的数据表;步骤S4:根据SQL的语法规范以及JOOQ的使用语法,动态地组装出本次查询需要的SQL;将SQL发送至对应的数据表中,根据查询条件查询出需要的数据。
[0020]例如其中一个实施例为一个订单列表的页面,列表页面上显示了订单信息(订单编号,订单金额),订单对应的商品信息(商品名称,商品规格),订单对应的付款信息(付款金额,付款状态),其中该些数据分别来源于商品表、订单表、付款单表3张表,并且同时支持商品名称,订单金额,付款状态3个查询的过滤条件。
[0021]在进行查询前,需要执行步骤S2,对查询条件字段的最大集合以及过滤条件字段的最大集合进行定义本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于JOOQ框架自动生成SQL查询的方法,其特征在于,包括以下步骤:步骤S1:获取数据表中的数据结构,根据数据结构找出主表以及从表,对主表以及从表构建关联关系;步骤S2:分别定义查询条件字段的最大集合以及过滤条件字段的最大集合,并将查询条件字段的最大集合以及过滤条件字段的最大集合展示在查询的界面中;步骤S3:获取用户的查询条件以及过滤条件,根据查询条件以及过滤条件对数据表做查找运算,得到本次查询所使用的数据表;步骤S4:根据SQL的语法规范以及JOOQ的使用语法,动态地组装出本次查询需要的SQL;将SQL发送至对应的数据库中,根据查询条件查询出需要的数据。2.根据权利要求1所述的一种基于JOOQ框架自动生成SQL查询的方法,其特征在于,所述步骤S1的具体过程如下:根据数据结构,找出返回的数据结构的顶层的数据表,以该数据表作为主表,数据结构中除主表以外的数据表为从表;将从表的主键与主表的外键进行关联,确定主表与从表的关联关系。3.根据权利要求1所述的一种基于JOOQ框架自动生成SQL查询的方法,其特征在于,所述查找运算包括并与运算以及或运算;所述步骤S3的具体过程如下:所述查询条件所对应的数据表以及过滤条件所对应的数据表进行或运算,得到结果表集;通过结果表集与其他数据表进行与运算,得到本次查询所使用的数据表。4.根据权利要求1所述的一种基于JOOQ框架自动生成SQL查询的方法,其特征在于,在执行步骤S3前,还需要进行如下操作:对查询条件以及过滤条件进行判空处理,若查询条件以及过滤条件均为空值,则不执行步骤S3。5.一种基于JOOQ框架自动生成SQL查询的系统,使用权利要求1~4任一项所述一种基于JOOQ框架自动生成SQL...

【专利技术属性】
技术研发人员:吕火生孔令超林国友陈啟铭何健进李杰王和彬罗兆源
申请(专利权)人:佛山众陶联供应链服务有限公司林周佳住家网络科技有限公司林周利利佳供应链服务有限公司共青城市众陶联供应链服务有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1