[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN113111239A - 一种通用数据库操作方法、装置及其存储介质 - Google Patents

一种通用数据库操作方法、装置及其存储介质 Download PDF

Info

Publication number
CN113111239A
CN113111239A CN202110378400.6A CN202110378400A CN113111239A CN 113111239 A CN113111239 A CN 113111239A CN 202110378400 A CN202110378400 A CN 202110378400A CN 113111239 A CN113111239 A CN 113111239A
Authority
CN
China
Prior art keywords
current
query
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.)
Granted
Application number
CN202110378400.6A
Other languages
English (en)
Other versions
CN113111239B (zh
Inventor
郝桃
王毛毛
张功贵
覃克天
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Lianchuang Xintian Technology Co ltd
Original Assignee
Beijing Lianchuang Xintian Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Lianchuang Xintian Technology Co ltd filed Critical Beijing Lianchuang Xintian Technology Co ltd
Priority to CN202110378400.6A priority Critical patent/CN113111239B/zh
Publication of CN113111239A publication Critical patent/CN113111239A/zh
Application granted granted Critical
Publication of CN113111239B publication Critical patent/CN113111239B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90348Query processing by searching ordered data, e.g. alpha-numerically ordered data

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种通用数据库操作方法、装置及其存储介质,属于软件开发领域。该方法主要包括,根据当前产品数据库的所有字段,判断当前预设查询条件是否需要加入非空字段等于操作,当前预设查询条件是否需要加入非等特殊查询操作,和/或当前查询条件是否需要进行排序操作;以及,根据判断结果以及当前产品数据库的相应字段得到当前预设查询条件,并利用当前预设查询条件生成当前查询构造器。本申请根据不同产品数据库动态生成的查询构造器,能够在产品查询条件有变化时,只需要前端业务调整传入参数即可,后台不需要进行变更,确保后台查询接口的规范性和通用性,提高软件开发效率。

Description

一种通用数据库操作方法、装置及其存储介质
技术领域
本发明涉及软件开发领域,尤其涉及一种通用数据库操作方法、装置及其存储介质。
背景技术
软件开发需要和数据库进行交互,一个正常的软件系统,除去业务逻辑处理之类的工作,剩下的百分之八十的工作量都是跟数据库进行交互,如果能将这部分的重复工作量降到最低,整个软件开发的效率就会有很大的提升。对java而言,常用的数据库操作工具有以下几款。
开放源代码的对象关系映射框架(Hibernate),开发过程简单并且开发效率高,但是具有执行性能差,结构化查询语言(sql)调优比较费劲的劣势。
开源数据库的持久层框架(Mybatis),虽然开发过程灵活执行性能较好,SQL调优方便,但是具有开发过程复杂,存在大量重复工作开发效率不高的劣势。
开源数据库的持久层框架增强工具(Mybatis-plus),能够使得对数据库的增、删、改、查操作得以简化,开发效率得以提高,总体性能和开发效率都不错。但是此增强工具知识在查询条件有变动时,需要重新根据查询条件编写结构化查询语言。
发明内容
针对现有技术存在的问题,本申请主要提供一种通用数据库操作方法、装置及存储介质,通过根据不同产品数据库动态生成的查询构造器,能够在产品查询条件有变化时,只需要前端业务调整传入参数即可。
为了实现上述目的,本申请采用的一个技术方案是:提供一种通用数据库操作方法,其包括:
根据当前产品数据库的所有字段,判断当前预设查询条件是否需要加入非空字段等于操作,当前预设查询条件是否需要加入非等特殊查询操作,和/或当前查询条件是否需要进行排序操作;以及,
根据判断结果以及当前产品数据库的相应字段得到当前预设查询条件,并利用当前预设查询条件生成当前查询构造器。
本申请采用的另一个技术方案是:提供一种通用数据库操作装置,其包括:
当前预设查询条件需求判断模块,用于根据当前产品数据库的所有字段,判断当前预设查询条件是否需要加入非空字段等于操作,当前预设查询条件是否需要加入非等特殊查询操作,和/或当前查询条件是否需要进行排序操作;
动态查询构造器生成模块,用于根据判断结果以及当前产品数据库的所有字段得到当前预设查询条件,并利用当前预设查询条件生成当前查询构造器。
本申请采用的另一个技术方案是:提供一种计算机可读存储介质,其存储有计算机指令,该计算机指令被操作以执行第一个方案中的通用数据库操作方法。
本申请的技术方案可以达到的有益效果是:提供一种通用数据库操作方法、装置及其存储介质,通过根据不同产品数据库动态生成的查询构造器,能够在产品查询条件有变化时,只需要前端业务调整传入参数即可,后台不需要进行变更,确保后台查询接口的规范性和通用性,提高软件开发效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一种通用数据库操作方法的一个具体实施方式的流程示意图;
图2是本申请一种通用数据库操作方法的一个具体实施例的流程示意图;
图3是本申请一种通用数据库操作方法的一个具体实施例的流程示意图;
图4是本申请一种通用数据库操作方法的一个具体实施例的流程示意图;
图5是本申请一种通用数据库操作方法的一个具体实施例的流程示意图;
图6是本申请一种通用数据库操作方法的一个具体实施例中通用重复性校验流程示意图;
图7是本申请一种通用数据库操作方法的一个具体实施例中分表通用操作方法处理流程示意图;
图8是本申请一种通用数据库操作装置的一个具体实施方实的示意图;
图9是本申请一种通用数据库操作装置的一个具体实施例的示意图;
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
下面结合附图对本申请的较佳实施例进行详细阐述,以使本申请的优点和特征能更易于被本领域技术人员理解,从而对本申请的保护范围做出更为清楚明确的界定。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
图1示出了本申请一种通用数据库操作方法的一个具体实施方式。
在图1示出的具体实施方式中,本申请公开的通用数据库操作方法,包括过程S101根据当前产品数据库的所有字段,判断当前预设查询条件是否需要加入非空字段等于操作,当前预设查询条件是否需要加入非等特殊查询操作,和/或当前查询条件是否需要进行排序操作;以及,过程S102,根据判断结果以及当前产品数据库的相应字段得到当前预设查询条件,并利用当前预设查询条件生成当前查询构造器。
根据不同产品数据库动态生成的查询构造器,能够在根据不同产品的不同查询条件,只需要前端业务调整传入参数即可,实现自动构建的目的,后台不需要进行变更,确保后台查询接口的规范性和通用性,提高软件开发效率。
过程S101对当前产品需要的预设查询条件需求进行判断,能够便于进一步根据查询条件需求生成查询构造器。
在本申请的一个具体实施例中,根据当前产品对应数据库的所有字段,获取其中实体类所有字段属性,如图2所示,前端传入的参数分为普通参数和特殊参数,普通参数就是实体类字段,这里获取实体类的所有字段属性能够便于可后续动态加入查询条件。
在本申请的一个具体实施例中,根据实体类所有字段属性,对当前预设查询条件中,是否需要加入非空字段即是否需要加入实体类非空字段进行判断,如图2所示,以便于根据判断结果得到包括或者不包括“加入非空字段等于操作”的预设查询条件,进一步便于生成查询构造器。
在本申请的一个具体实施例中,根据当前产品对应数据库的所有字段,判断其中是否存在非等特殊查询,如图2所示,即判断是否有区间查询、模糊匹配、空/非空查询、大于、小于等一系列规定好的非等特殊操作符,以便于如果字段中存在非等特殊查询字符时,得到包括或不包括“加入非等特殊查询操作”的预设查询条件,进一步生成查询构造器。
在本申请的一个具体实施例中,根据当前产品对应数据库的所有字段,判断是否存在排序条件,如图2所示,优选的,判断上述字段中是否存在排序操作符,以便于如果上述字段中存在排序操作符时,得到包括或不包括“加入排序操作”的预设查询条件,进一步生成查询构造器。
过程S102,根据判断结果以及当前产品数据库的相应字段得到当前预设查询条件,并利用当前预设查询条件生成当前查询构造器,能够在产品查询条件有变化时,只需要前端业务调整传入参数即可以相应调整预设查询条件,进一步利用调整后的预设查询条件生成查询构造器,实现自动构建的目的,后台不需要进行变更,确保后台查询接口的规范性和通用性,提高软件开发效率。
在本申请的一个具体实施例中,上述根据判断结果以及当前产品数据库的相应字段得到当前预设查询条件,并利用当前预设查询条件生成当前查询构造器的过程S102包括,根据得到当前预设查询条件生成当前预设查询条件的结构化查询语言(sql)片段,并利用当前预设查询条件的结构化查询语言片段(当前预设条件sql片段)构造当前查询构造器。
在本申请的一个具体实施例中,若需要加入非空字段,则在查询构造器中加入相应实体类非空字段等于查询操作的结构化查询语言(sql)片段。
在本申请的一个具体实施例中,若根据实体类所有字段属性判断得出,需要加入非空字段,如图2所示,则在查询构造器中加入相应实体类非空字段等于查询操作的结构化查询语言(sql)片段,即会将实体类所有的非空字段(前端传回来的普通参数)逐个按等于操作加入构造器中。
在本申请的一个具体实例中,若根据实体类所有字段属性判断得出,不需要加入非空字段,则继续对预设查询条件中是否需要加入非等特殊查询操作进行判断,如图2所示。
在本申请的一个具体实施例中,若需要加入非等特殊查询操作,则根据非等特殊查询字符在查询构造器中加入相应非等特殊查询操作的结构化查询语言(sql)片段。
在本申请的一个具体实施例中,若当前产品的所有字段中存在区间查询、模糊匹配、空/非空查询、大于、小于等一系列规定好的特殊操作符(即非等特殊查询字符),则需要加入相应非等特殊操作,那么获取上述特殊操作符并判断操作类型,并根据不同的非等特殊查询字符在查询构造器中加入相应不同的非等特殊操作的结构化查询语言(sql)片段,如图2所示。
在本申请的一个具体实例中,若当前产品的所有字段中不存在特殊操作符,则不需要加入非等特殊操作,那么继续对预设查询条件中是否存在排序条件进行判断,如图2所示。
在本申请的一个具体实施例中,若需要进行排序操作,则在查询构造器中加入相应排序操作的结构化查询语言(sql)片段。
在本申请的一个具体实例中,若当前产品的所有字段中存在排序条件,则根据对应字段在查询构造器中加入相应排序操作的结构化查询语言(sql)片段。
在本申请的一个具体实施例中,若当前产品数据有多个数据表,则在当前查询构造器中加入表关联关系得到当前表关联结构化查询语言(sql)片段;并且获取每个数据表的别名属性,并对当前预设查询条件对应的不同数据表的相应字段进行别名化处理。
开源数据库的持久层框架增强工具(Mybat i s-p l us)只针对单表进行操作,一个软件系统会存在大量多表关联查询,然而此增强工具没有这块工具,多表关联查询只能采用Mybatis的方式写sql查询,开发效率较低。另外,大型软件系统数据量大往往都会采用分库分表存储,此增强工具虽然存在动态表名替换,但是并没有直接操作分表的方法。
本申请增加了多表关联关系,使得开发人员只需要按照构造器格式创建构造对象即可,替换了原本多表关联查询只能按代码层级一级一级往下写到最底层sql的方式,在任何代码层级都能使用多表关联条件构造器构造出查询sql去执行,减少了代码量,提高开发效率;并且并利用当前预设查询条件生成当前查询构造器,能够在产品查询条件有变化时,只需要前端业务调整传入参数即可以相应调整预设查询条件,进一步利用调整后的预设查询条件生成查询构造器,实现自动构建的目的,后台不需要进行变更,确保后台查询接口的规范性和通用性,提高软件开发效率。
图3出了本申请的一个具体实例,在图3出的具体实例中,本申请的产品数据具有多个数据表。
在本申请的一个具体实例中,若当前产品数据具有多个数据表,则在当前查询构造其中加入表关联关系,如图3示出的具体实例及图4示出的具体实例中所示,并生成当前表关联sql片段,利用当前表关联sql片段以及当前预设条件sql片段构造当前查询构造器。
在本申请的一个具体实施例中,可以动态添加表关联关系,实现多个表关联,表之间的关联关系有:左关联、右关联、并集关联、交集关联,如图3所示。
在本申请的一个具体实例中,如图4所示,获取上述多个数据表中各个数据表的别名属性并对当前预设查询条件对应的不同数据表的相应字段进行别名化处理。
优选的,如图3所示,在查询构造器中加入相应实体类非空字段等于查询操作的结构化查询语言(sql)片段之前,对相应的实体类字段进行别名化处理。
优选的,如图3所示,在根据非等特殊查询字符在查询构造器中加入相应非等特殊查询操作的结构化查询语言(sql)片段之前,对相应的特殊查询字段进行别名化处理。
优选的,如图3所示,在根据对应字段在查询构造器中加入相应排序操作的结构化查询语言(sql)片段之前,对排序相应的字段进行别名化处理。
利用多表管理关系以及别名化处理,使得生成的构造器会根据构造对象生成查询sql去执行,减少编码过程,提高开发效率;并且能够在产品查询条件有变化时,只需要前端业务调整传入参数即可以自动构建生成查询构造器,后台不需要进行变更,确保后台查询接口的规范性和通用性,提高软件开发效率。
图5示出了本申请的一个具体实施例,其中过程S503表示的是,本申请通用数据库操作方法还包括,根据用户输入的当前查询条件,利用前述当前查询构造器处理解析生成当前结构化查询语言,并利用当前结构化查询语言执行查询,这样就能够根据业务需要,动态加入相关的查询条件。
在本申请的一个具体实施例中,上述根据用户输入的当前查询条件,利用前述当前查询构造器处理解析生成当前结构化查询语言过程还包括,加入排序条件,一般的查询通常都会有排序要求,可以根据业务需求,动态加入相关的排序条件。
在本申请的一个具体实施例中,上述根据用户输入的当前查询条件,利用前述当前查询构造器处理解析生成当前结构化查询语言过程还包括,加入分页元素,一般的查询通常都会有分页要求,可以根据业务需求,加入分页元素。
在本申请的一个具体实施例中,上述根据用户输入的当前查询条件,利用前述当前查询构造器处理解析生成当前结构化查询语言过程还包括,解析sql片段:解析加入的查询条件、排序条件、分页元素,生成相应的sql片段。
在本申请的一个具体实施例中,上述上述根据用户输入的当前查询条件,利用前述当前查询构造器处理解析生成当前结构化查询语言过程还包括,(k)生成sql语句:将表关联sql片段、查询结果sql片段、查询条件sql片段、排序条件sql片段、分页元素sql片段进行组合,生成完整可执行的sql语句即当前结构化查询语言。
在本申请的一个具体实施例中,将生成的当前结构化查询语言进行执行,并将查询sql的执行结果进行映射转换,转换为实体类对象返回。
在本申请的一个具体实施例中,在利用当前结构化查询语言执行查询之前,将当前结构化查询语言进行驼峰自动转换。
采用规范化设计的系统,数据库表的字段都会采用下划线格式,程序代码中的字段都是采用驼峰转换后,将下划线去掉,下划线后面字母变为大写,这块增加驼峰自动转换功能,让原来查询构造器只能传入带下划线的数据库字段进行查询的,拓展到兼容下划线和驼峰后的字段两种模式,执行sql前,会全部将字段转换为下划线格式,确保sql正常执行,使得查询构造器兼容性更强。
在本申请的一个具体实施例中,本申请的通用数据库操作方法包括通用重复性校验流程,如图6所示。
在本申请的一个具体实施例中,根据当前需要进行重复性校验的字段构造当前待校验实体类查询对象;根据当前需要进行重复性校验的字段,当前待校验实体类查询对象,当前待校验实体类查询对象的当前id属性,以及当前需要进行重复性校验的字段中已删除字段,得到当前重复性校验结构化查询语言(sql)片段,其中,若当前待校验实体类查询对象的当前id属性为空,则忽略当前id属性。
开发人员需要对数据库表数据判断重复性时,只需要简单调用方法即可,不再每次都单独写程序实现,简化了编码过程,提高了开发效率,同时也规范了代码。
在本申请的一个具体实施例中,根据当前需要进行重复性校验的字段,当前待校验实体类查询对象,当前待校验实体类查询对象的当前id属性,以及当前需要进行重复性校验的字段中已删除字段,得到当前重复性校验结构化查询语言(sql)片段的过程包括,如图6所示,根据当前待校验实体类查询对象,获取当前待校验实体类查询对象的当前待校验id属性,若当前待校验id属性为空,则忽略当前待校验id属性,并根据当前待校验实体类查询对象,以及当前需要进行重复性校验的字段得到当前重复性校验结构化查询语言(sql)片段;若当前待校验id属性不为空,则排除当前待校验id属性,并根据当前待校验实体类查询对象,以及当前需要进行重复性校验的字段得到当前重复性校验结构化查询语言(sql)片段。
在本申请的一个具体实施例中,如图6所示,根据传入的需要检验重复性的字段,校验器是否包含已删除数据,如果包含已删除数据,则利用已删除字段与当前需要进行重复性校验的字段,当前待校验实体类查询对象,以及当前待校验实体类查询对象的当前id属性,得到当前重复性校验结构化查询语言(sql)片段。
在本申请的一个具体实施例中,利用上述当前重复性校验结构化查询语言(sql)片段,连接数据库,执行查询,并根据查询结果记录数判断是否重复。如果查询结果记录数大于0,说明数据库已经存在相同记录数,证明数据重复了;反之等于0,说明数据库没有相同记录,可以正常写入。
在本申请的一个具体实施例中,本申请的通用数据库操作方法还包括分表通用操作方法处理流程,如图7所示。
在本申请的一个具体实施例中,将当前产品数据库中的数据表进行分表操作,并将各个分表名缓存至现场队列中;在利用当前结构化查询语言执行查询时,将当前结构化查询语言中的表明替换为分表名,这样能够会让分表操作和正常表一样简单,无需自己写sql实现,提高了开发的效率。
在本申请的一个具体实施例中,在分表操作方法进入时,将传入的分表表名缓存到现场队列中,这步操作主要是为了后面从队列中取出分表表名进行替换。
在本申请的一个具体实施例中,继承mybatis-plus的保存、批量保存、更新、批量更新、删除、批量删除、查询、分页查询、计数等通用用法,如图7所示。
在本申请的一个具体实施例中,在执行sql语句之前,将sql语句拦截下来,从线程队列中取数据,如果能取得到数据,则说明是分表操作,需要将sql语句里面的表名替换为分表表名,这样就达到执行的增、删、改、查操作是针对分表进行的。
图8示出了本申请一种通用数据库操作装置的一个具体实施方式。
在图8示出的通用数据库操作装置,包括当前预设查询条件需求判断模块801,用于根据当前产品数据库的所有字段,判断当前预设查询条件是否需要加入非空字段等于操作,当前预设查询条件是否需要加入非等特殊查询操作,和/或当前查询条件是否需要进行排序操作;以及动态查询构造器生成模块802,用于根据判断结果以及当前产品数据库的所有字段得到当前预设查询条件,并利用当前预设查询条件生成当前查询构造器。
在本申请的一个具体实施例中,上述当前预设查询条件需求判断模块801,可以根据当前产品对应数据库的所有字段,获取其中实体类所有字段属性,并根据实体类所有字段属性,对当前预设查询条件中,是否需要加入非空字段即是否需要加入实体类非空字段进行判断,如图2所示,以便于根据判断结果得到包括或者不包括“加入非空字段等于操作”的预设查询条件,进一步便于生成查询构造器。
在本申请的一个具体实施例中,上述当前预设查询条件需求判断模块801,可以根据当前产品对应数据库的所有字段,判断其中是否存在非等特殊查询,以便于如果字段中存在非等特殊查询字符时,得到包括或不包括“加入非等特殊查询操作”的预设查询条件,进一步生成查询构造器。
在本申请的一个具体实施例中,上述当前预设查询条件需求判断模块801,根据当前产品对应数据库的所有字段,判断是否存在排序条件,如图2所示,优选的,判断上述字段中是否存在排序操作符,以便于如果上述字段中存在排序操作符时,得到包括或不包括“加入排序操作”的预设查询条件,进一步生成查询构造器。
在本申请的一个具体实施例中,上述动态查询构造器生成模块802,可以根据得到当前预设查询条件生成当前预设查询条件的结构化查询语言(sql)片段,并利用当前预设查询条件的结构化查询语言片段(当前预设条件sql片段)构造当前查询构造器。
在本申请的一个具体实施例中,上述动态查询构造器生成模块802,可以根据需要加入非空字段判断结果,则在查询构造器中加入相应实体类非空字段等于查询操作的结构化查询语言(sql)片段。
在本申请的一个具体实施例中,上述动态查询构造器生成模块802,可以根据需要加入非等特殊查询操作的判断结果,根据非等特殊查询字符在查询构造器中加入相应非等特殊查询操作的结构化查询语言(sql)片段。
在本申请的一个具体实施例中,上述动态查询构造器生成模块802,可以根据需要进行排序操作的判断结果,在查询构造器中加入相应排序操作的结构化查询语言(sql)片段。
可以根据网页前端传入的参数初始化出查询条件构造器,业务变更需求导致查询条件变动时,只需要调整网页前端传入的参数即可,后台接口无需变动,确保查询接口通用性。
在本申请的一个具体实施例中,上述动态查询构造器生成模块包括,多表关联关系构造单元以及别名化处理单元,如图9所示,其中,多表关联关系构造单元,用于若当前产品数据具有多个数据表,则在当前查询构造器中加入多表关联关系得到当前表关联结构化查询语言(sql)片段;别名化处理单元,用于获取每个数据表的别名属性,并获取每个数据表的别名属性,并对当前预设查询条件对应的不同数据表的相应字段进行别名化处理。
在本申请的一个具体实施例中,上述多表关联关系构造单元,可以动态添加表关联关系,实现多个表关联,表之间的关联关系有:左关联、右关联、并集关联、交集关联,如图4所示。
在本申请的一个具体实施例中,上述别名化处理单元,获取上述多个数据表中各个数据表的别名属性并对当前预设查询条件对应的不同数据表的相应字段进行别名化处理。
在本申请的一个具体实例中,上述别名化处理单元,如图4所示,在查询构造器中加入相应实体类非空字段等于查询操作的结构化查询语言(sql)片段之前,对相应的实体类字段进行别名化处理。
在本申请的一个具体实例中,上述别名化处理单元,如图4所示,在根据非等特殊查询字符在查询构造器中加入相应非等特殊查询操作的结构化查询语言(sql)片段之前,对相应的特殊查询字段进行别名化处理。
在本申请的一个具体实例中,上述别名化处理单元,如图4所示,在根据对应字段在查询构造器中加入相应排序操作的结构化查询语言(sql)片段之前,对排序相应的字段进行别名化处理。
利用多表管理关系以及别名化处理,使得生成的构造器会根据构造对象生成查询sql去执行,减少编码过程,提高开发效率;并且能够在产品查询条件有变化时,只需要前端业务调整传入参数即可以自动构建生成查询构造器,后台不需要进行变更,确保后台查询接口的规范性和通用性,提高软件开发效率。
在本申请的一个具体实施例中,如图9的模块903所示,本申请数据库通用操作装置还包括,当前查询执行模块,用于根据用户输入的当前查询条件利用当前查询构造器处理解析生成当前结构化查询语言,并利用当前结构化查询语言执行查询,这样就能够根据业务需要,动态加入相关的查询条件。
在本申请的一个具体实施例中,上述当前查询执行模块903,能够加入排序条件,一般的查询通常都会有排序要求,可以根据业务需求,动态加入相关的排序条件。
在本申请的一个具体实施例中,上述当前查询执行模块903,能够加入分页元素,一般的查询通常都会有分页要求,可以根据业务需求,加入分页元素。
在本申请的一个具体实施例中,上述当前查询执行模块903,解析加入的查询条件、排序条件、分页元素,生成相应的sql片段,并将表关联sql片段、查询结果sql片段、查询条件sql片段、排序条件sql片段、分页元素sql片段进行组合,生成完整可执行的sql语句即当前结构化查询语言。
在本申请的一个具体实施例中,上述当前查询执行模块903,在利用当前结构化查询语言执行查询之前,将当前结构化查询语言进行驼峰自动转换。
采用规范化设计的系统,数据库表的字段都会采用下划线格式,程序代码中的字段都是采用驼峰转换后,将下划线去掉,下划线后面字母变为大写,这块增加驼峰自动转换功能,让原来查询构造器只能传入带下划线的数据库字段进行查询的,拓展到兼容下划线和驼峰后的字段两种模式,执行sql前,会全部将字段转换为下划线格式,确保sql正常执行,使得查询构造器兼容性更强。
在本申请的一个具体实施例中,本申请数据库通用操作装置还包括通用重复性校准模块,用于根据当前需要进行重复性校验的字段构造当前待校验实体类查询对象;根据当前需要进行重复性校验的字段,当前待校验实体类查询对象,当前待校验实体类查询对象的当前id属性,以及当前需要进行重复性校验的字段中已删除字段,得到当前重复性校验结构化查询语言(sql)片段;其中,若当前待校验实体类查询对象的当前id属性为空,则忽略当前id属性。
这样,开发人员需要对数据库表数据判断重复性时,只需要简单调用方法即可,不再每次都单独写程序实现,简化了编码过程,提高了开发效率,同时也规范了代码。
在本申请的一个具体实施例中,上述通用重复性校准模块,如图6所示,能够根据当前待校验实体类查询对象,获取当前待校验实体类查询对象的当前待校验id属性,若当前待校验id属性为空,则忽略当前待校验id属性,并根据当前待校验实体类查询对象,以及当前需要进行重复性校验的字段得到当前重复性校验结构化查询语言(sql)片段;若当前待校验id属性不为空,则排除当前待校验id属性,并根据当前待校验实体类查询对象,以及当前需要进行重复性校验的字段得到当前重复性校验结构化查询语言(sql)片段。
在本申请的一个具体实施例中,上述通用重复性校验模块,如图6所示,能够根据传入的需要检验重复性的字段,校验器是否包含已删除数据,如果包含已删除数据,则利用已删除字段与当前需要进行重复性校验的字段,当前待校验实体类查询对象,以及当前待校验实体类查询对象的当前id属性,得到当前重复性校验结构化查询语言(sql)片段。
在本申请的一个具体实施例中,上述通用重复性校验模块,能够利用上述当前重复性校验结构化查询语言(sql)片段,连接数据库,执行查询,并根据查询结果记录数判断是否重复。如果查询结果记录数大于0,说明数据库已经存在相同记录数,证明数据重复了;反之等于0,说明数据库没有相同记录,可以正常写入。
在本申请的一个具体实施例中,本申请数据库通用操作装置还包括分表通用操作模块,如图7所示,用于将当前产品数据库中的数据表进行分表操作,并将各个分表名缓存至现场队列中;在利用当前结构化查询语言执行查询时,将当前结构化查询语言中的表明替换为分表名。
这样能够会让分表操作和正常表一样简单,无需自己写sql实现,提高了开发的效率。
在本申请的一个具体实施例中,上述分表通用操作模块能够继承mybatis-plus的保存、批量保存、更新、批量更新、删除、批量删除、查询、分页查询、计数等通用用法,如图7所示,并在sql语句之前,将sql语句拦截下来,从线程队列中取数据,如果能取得到数据,则说明是分表操作,需要将sql语句里面的表名替换为分表表名,这样就达到执行的增、删、改、查操作是针对分表进行的。
在本申请的一个具体实施例中,本申请一种通用数据库操作装置中各功能模块可直接在硬件中、在由处理器执行的软件模块中或在两者的组合中。
软件模块可驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸盘、CD-ROM或此项技术中已知的任何其它形式的存储介质中。示范性存储介质耦合到处理器,使得处理器可从存储介质读取信息和向存储介质写入信息。
处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)、现场可编程门阵列(英文:Field Programmable Gate Array,简称:FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其任何组合等。通用处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如DSP与微处理器的组合、多个微处理器、结合DSP核心的一个或一个以上微处理器或任何其它此类配置。在替代方案中,存储介质可与处理器成一体式。处理器和存储介质可驻留在ASIC中。ASIC可驻留在用户终端中。在替代方案中,处理器和存储介质可作为离散组件驻留在用户终端中。
在本申请的另一个具体实施方式中,一种计算机可读存储介质,其存储有计算机指令,计算机指令被操作以执行方案一中的通用数据库操作的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上仅为本申请的实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (10)

1.一种通用数据库操作方法,其特征在于,包括,
根据当前产品数据库的所有字段,判断当前预设查询条件是否需要加入非空字段等于操作,所述当前预设查询条件是否需要加入非等特殊查询操作,和/或所述当前查询条件是否需要进行排序操作;以及,
根据所述判断结果以及所述当前产品数据库的相应字段得到所述当前预设查询条件,并利用所述当前预设查询条件生成当前查询构造器。
2.根据权利要求1所述的通用数据库操作方法,其特征在于,还包括,
根据用户输入的当前查询条件,利用所述当前查询构造器处理解析生成当前结构化查询语言,并利用所述当前结构化查询语言执行查询。
3.根据权利要求1或2所述的通用数据库操作方法,其特征在于,所述根据所述判断结果以及所述当前产品数据库的所述所有字段得到所述当前预设查询条件的过程包括,
若所述当前产品数据具有多个数据表,则在所述当前查询构造器中加入多表关联关系得到当前表关联结构化查询语言片段;以及,
获取每个所述数据表的别名属性,并对所述当前预设查询条件对应的不同所述数据表的相应所述字段进行别名化处理。
4.根据权利要求2所述的通用数据库操作方法,其特征在于,还包括,
在利用所述当前结构化查询语言执行查询之前,将所述当前结构化查询语言进行驼峰自动转换。
5.根据权利要求1或2所述的通用数据库操作方法,其特征在于,还包括,
根据当前需要进行重复性校验的字段构造当前待校验实体类查询对象;以及,
根据所述当前需要进行重复性校验的所述字段,所述当前待校验实体类查询对象,所述当前待校验实体类查询对象的当前id属性,以及所述当前需要进行重复性校验的所述字段中已删除字段,得到当前重复性校验结构化查询语言片段;
其中,若所述当前待校验实体类查询对象的所述当前id属性为空,则忽略所述当前id属性。
6.根据权利要求2所述的通用数据库操作方法,其特征在于,还包括,
将所述当前产品数据库中的数据表进行分表操作,并将各个分表名缓存至现场队列中;以及,
在利用所述当前结构化查询语言执行查询时,将所述当前结构化查询语言中的表明替换为所述分表名。
7.一种通用数据库操作装置,其特征在于,包括
当前预设查询条件需求判断模块,用于根据当前产品数据库的所有字段,判断当前预设查询条件是否需要加入非空字段等于操作,所述当前预设查询条件是否需要加入非等特殊查询操作,和/或所述当前查询条件是否需要进行排序操作;以及,
动态查询构造器生成模块,用于根据所述判断结果以及所述当前产品数据库的所述所有字段得到所述当前预设查询条件,并利用所述当前预设查询条件生成当前查询构造器。
8.根据权利要求7所述的通用数据库操作装置,其特征在于,
还包括当前查询执行模块,
用于根据用户输入的当前查询条件利用所述当前查询构造器处理解析生成当前结构化查询语言,并利用所述当前结构化查询语言执行查询;
所述动态查询构造器生成模块包括,多表关联关系构造单元以及别名化处理单元;
其中,所述多表关联关系构造单元,用于若所述当前产品数据具有多个数据表,则在所述当前查询构造器中加入多表关联关系得到当前表关联结构化查询语言片段;
所述别名化处理单元,用于获取每个所述数据表的别名属性,并获取每个所述数据表的别名属性,并对所述当前预设查询条件对应的不同所述数据表的相应所述字段进行别名化处理。
9.根据权利要求7所述的通用数据库操作装置,其特征在于,还包括,
通用重复性校准模块,
用于根据当前需要进行重复性校验的字段构造当前待校验实体类查询对象;以及根据所述当前需要进行重复性校验的所述字段,所述当前待校验实体类查询对象,所述当前待校验实体类查询对象的当前id属性,以及所述当前需要进行重复性校验的所述字段中已删除字段,得到当前重复性校验结构化查询语言片段;其中,若所述当前待校验实体类查询对象的所述当前id属性为空,则忽略所述当前id属性;以及,
分表通用操作模块,
用于将所述当前产品数据库中的数据表进行分表操作,并将各个分表名缓存至现场队列中;在利用所述当前结构化查询语言执行查询时,将所述当前结构化查询语言中的表明替换为所述分表名。
10.一种计算机可读存储介质,其存储有计算机指令,所述计算机指令被操作以执行权利要求1-6任一所述的通用数据库操作方法。
CN202110378400.6A 2021-04-08 2021-04-08 一种通用数据库操作方法、装置及其存储介质 Active CN113111239B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110378400.6A CN113111239B (zh) 2021-04-08 2021-04-08 一种通用数据库操作方法、装置及其存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110378400.6A CN113111239B (zh) 2021-04-08 2021-04-08 一种通用数据库操作方法、装置及其存储介质

Publications (2)

Publication Number Publication Date
CN113111239A true CN113111239A (zh) 2021-07-13
CN113111239B CN113111239B (zh) 2024-03-29

Family

ID=76715241

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110378400.6A Active CN113111239B (zh) 2021-04-08 2021-04-08 一种通用数据库操作方法、装置及其存储介质

Country Status (1)

Country Link
CN (1) CN113111239B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115587095A (zh) * 2022-10-08 2023-01-10 广州市玄武无线科技股份有限公司 数据库分表创建方法、装置及存储介质
CN116521686A (zh) * 2023-05-22 2023-08-01 美云智数科技有限公司 动态数据表处理方法、装置、计算机设备及存储介质

Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2534334A1 (en) * 2005-02-28 2006-08-28 Microsoft Corporation Composable query building api and query language
CN1904884A (zh) * 2005-07-29 2007-01-31 株式会社理光 用于异构媒体的图形化查询构建器及其方法
US20090164414A1 (en) * 2007-12-21 2009-06-25 Sap Ag Query response service for business objects
CN102346785A (zh) * 2011-11-15 2012-02-08 北京创腾科技有限公司 一种用于直接对数据库实现自定义字段的方法和装置
CN102799644A (zh) * 2012-06-28 2012-11-28 用友软件股份有限公司 基于元数据的数据库动态查询系统和数据库动态查询方法
CN103020064A (zh) * 2011-09-20 2013-04-03 佳都新太科技股份有限公司 一种通过注解方式生成查询条件的方法和配置
US20130151572A1 (en) * 2008-06-19 2013-06-13 BioFortis, Inc. Database query builder
US20140164357A1 (en) * 2010-05-13 2014-06-12 Salesforce.Com, Inc. Method and system for optimizing queries in a multi-tenant database environment
CN104317964A (zh) * 2014-11-14 2015-01-28 中国建设银行股份有限公司 一种基于iBatis的对象关系映射方法及系统
CN105843609A (zh) * 2016-03-18 2016-08-10 浪潮软件集团有限公司 一种基于Spring和MyBatis的MVC框架
CN106020847A (zh) * 2016-06-06 2016-10-12 北京京东尚科信息技术有限公司 一种持久层开发框架配置sql的方法和装置
US20170076054A1 (en) * 2015-09-10 2017-03-16 Iris International, Inc. Particle analysis systems and methods
CN106528674A (zh) * 2016-10-31 2017-03-22 厦门服云信息科技有限公司 基于Hbase行健的高性能查询方法和装置
CN106844678A (zh) * 2017-01-24 2017-06-13 山东浪潮商用系统有限公司 一种Mybatis数据源与连接池的交互方法
CN108280082A (zh) * 2017-01-06 2018-07-13 北京京东尚科信息技术有限公司 一种统计数据的即席查询方法及系统
US20190073403A1 (en) * 2016-03-14 2019-03-07 Trinetx, Inc. Querying data using master terminology data model
CN110858202A (zh) * 2018-08-21 2020-03-03 北京京东尚科信息技术有限公司 数据库查询语句中where子句的生成方法和生成装置
US20200183934A1 (en) * 2018-12-06 2020-06-11 Salesforce.Com, Inc. Efficient database searching for queries using wildcards
CN111274263A (zh) * 2020-01-13 2020-06-12 平安国际智慧城市科技股份有限公司 可视化数据库变更语句生成方法、装置及存储介质
CN111581231A (zh) * 2020-04-20 2020-08-25 北京明略软件系统有限公司 一种基于异构数据库的查询方法和装置
CN111611276A (zh) * 2020-06-05 2020-09-01 腾讯科技(深圳)有限公司 数据查询方法、装置及存储介质
CN111966340A (zh) * 2020-08-20 2020-11-20 杭州安恒信息技术股份有限公司 一种基于Mybatis框架的代码生成方法、装置、设备及介质
CN111984669A (zh) * 2020-07-08 2020-11-24 福建亿能达信息技术股份有限公司 一种支持动态变量的函数式sql查询方法、装置、设备和介质
CN112035510A (zh) * 2020-08-28 2020-12-04 中电长城(长沙)信息技术有限公司 一种信息系统复杂数据查询方法及系统

Patent Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2534334A1 (en) * 2005-02-28 2006-08-28 Microsoft Corporation Composable query building api and query language
CN1904884A (zh) * 2005-07-29 2007-01-31 株式会社理光 用于异构媒体的图形化查询构建器及其方法
US20090164414A1 (en) * 2007-12-21 2009-06-25 Sap Ag Query response service for business objects
US20130151572A1 (en) * 2008-06-19 2013-06-13 BioFortis, Inc. Database query builder
US20140164357A1 (en) * 2010-05-13 2014-06-12 Salesforce.Com, Inc. Method and system for optimizing queries in a multi-tenant database environment
CN103020064A (zh) * 2011-09-20 2013-04-03 佳都新太科技股份有限公司 一种通过注解方式生成查询条件的方法和配置
CN102346785A (zh) * 2011-11-15 2012-02-08 北京创腾科技有限公司 一种用于直接对数据库实现自定义字段的方法和装置
CN102799644A (zh) * 2012-06-28 2012-11-28 用友软件股份有限公司 基于元数据的数据库动态查询系统和数据库动态查询方法
CN104317964A (zh) * 2014-11-14 2015-01-28 中国建设银行股份有限公司 一种基于iBatis的对象关系映射方法及系统
US20170076054A1 (en) * 2015-09-10 2017-03-16 Iris International, Inc. Particle analysis systems and methods
US20190073403A1 (en) * 2016-03-14 2019-03-07 Trinetx, Inc. Querying data using master terminology data model
CN105843609A (zh) * 2016-03-18 2016-08-10 浪潮软件集团有限公司 一种基于Spring和MyBatis的MVC框架
CN106020847A (zh) * 2016-06-06 2016-10-12 北京京东尚科信息技术有限公司 一种持久层开发框架配置sql的方法和装置
CN106528674A (zh) * 2016-10-31 2017-03-22 厦门服云信息科技有限公司 基于Hbase行健的高性能查询方法和装置
CN108280082A (zh) * 2017-01-06 2018-07-13 北京京东尚科信息技术有限公司 一种统计数据的即席查询方法及系统
CN106844678A (zh) * 2017-01-24 2017-06-13 山东浪潮商用系统有限公司 一种Mybatis数据源与连接池的交互方法
CN110858202A (zh) * 2018-08-21 2020-03-03 北京京东尚科信息技术有限公司 数据库查询语句中where子句的生成方法和生成装置
US20200183934A1 (en) * 2018-12-06 2020-06-11 Salesforce.Com, Inc. Efficient database searching for queries using wildcards
CN111274263A (zh) * 2020-01-13 2020-06-12 平安国际智慧城市科技股份有限公司 可视化数据库变更语句生成方法、装置及存储介质
CN111581231A (zh) * 2020-04-20 2020-08-25 北京明略软件系统有限公司 一种基于异构数据库的查询方法和装置
CN111611276A (zh) * 2020-06-05 2020-09-01 腾讯科技(深圳)有限公司 数据查询方法、装置及存储介质
CN111984669A (zh) * 2020-07-08 2020-11-24 福建亿能达信息技术股份有限公司 一种支持动态变量的函数式sql查询方法、装置、设备和介质
CN111966340A (zh) * 2020-08-20 2020-11-20 杭州安恒信息技术股份有限公司 一种基于Mybatis框架的代码生成方法、装置、设备及介质
CN112035510A (zh) * 2020-08-28 2020-12-04 中电长城(长沙)信息技术有限公司 一种信息系统复杂数据查询方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
MOHAMED REDA BOUADJENEK: "Multi-field query expansion is effective for biomedical dataset retrieval", 《DATABASE》, vol. 2017, 7 September 2017 (2017-09-07), pages 1 - 20 *
汪晟杰: "面向领域模型的数据访问层的应用和关键技术研究", 《中国优秀硕士学位论文全文数据库 信息科技》, 15 June 2008 (2008-06-15), pages 138 - 202 *
舒红平;刘魁;: "基于Java的Web通用查询组件设计及应用", 成都信息工程学院学报, no. 03, pages 361 - 362 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115587095A (zh) * 2022-10-08 2023-01-10 广州市玄武无线科技股份有限公司 数据库分表创建方法、装置及存储介质
CN116521686A (zh) * 2023-05-22 2023-08-01 美云智数科技有限公司 动态数据表处理方法、装置、计算机设备及存储介质
CN116521686B (zh) * 2023-05-22 2023-10-27 美云智数科技有限公司 动态数据表处理方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN113111239B (zh) 2024-03-29

Similar Documents

Publication Publication Date Title
WO2023116086A1 (zh) 数据查询方法、装置、电子设备以及存储介质
KR102361153B1 (ko) 데이터 유형에 관련된 데이터 프로파일링 동작 관리
WO2023060878A1 (zh) 一种数据查询方法、系统、异构加速平台及存储介质
US9930113B2 (en) Data retrieval via a telecommunication network
CN110134705A (zh) 一种数据查询方法、缓存服务器及终端
EP2668598A1 (en) Analytical data processing
WO2023045295A1 (zh) 数据倾斜处理方法、设备、存储介质及程序产品
CN113111239A (zh) 一种通用数据库操作方法、装置及其存储介质
US12130814B2 (en) Late materialization of queried data in database cache
CN111198898B (zh) 大数据查询方法及大数据查询装置
US11132363B2 (en) Distributed computing framework and distributed computing method
CN110362593B (zh) 一种数据查询方法、装置、设备及存储介质
CN109783498B (zh) 数据处理方法及装置、电子设备、存储介质
CN111026775A (zh) 关联指标的确定方法、装置、服务器和存储介质
CN107145549B (zh) 一种数据库缓存控制方法以及系统
CN111159215A (zh) Java类与关系型数据库的映射方法、装置及计算设备
CN110888876A (zh) 生成数据库脚本的方法、装置、存储介质及计算机设备
CN110909017B (zh) 数据分析方法和系统
WO2023220973A1 (zh) 数据处理方法、装置、电子设备和计算机可读存储介质
CN115827676A (zh) Sql子查询的执行方法、装置、终端设备以及介质
US20230412704A1 (en) Nformation transmission method, system, and apparatus
CN111143398B (zh) 基于扩展sql函数的超大集合查询方法及装置
CN111125264B (zh) 基于扩展olap模型的超大集合分析方法及装置
CN116303571A (zh) 数据查询方法、装置、设备及存储介质
CN113934430A (zh) 数据检索分析方法、装置、电子设备及存储介质

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