CN117633330A - 数据查询方法、装置、电子设备及存储介质 - Google Patents

数据查询方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117633330A
CN117633330A CN202311257832.7A CN202311257832A CN117633330A CN 117633330 A CN117633330 A CN 117633330A CN 202311257832 A CN202311257832 A CN 202311257832A CN 117633330 A CN117633330 A CN 117633330A
Authority
CN
China
Prior art keywords
query
data
field
identifier
mongodb
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
Application number
CN202311257832.7A
Other languages
English (en)
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.)
China United Network Communications Group Co Ltd
Original Assignee
China United Network Communications Group 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 China United Network Communications Group Co Ltd filed Critical China United Network Communications Group Co Ltd
Priority to CN202311257832.7A priority Critical patent/CN117633330A/zh
Publication of CN117633330A publication Critical patent/CN117633330A/zh
Pending legal-status Critical Current

Links

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/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9532Query formulation
    • 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/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9538Presentation of query results
    • 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/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

本申请提供一种数据查询方法、装置、电子设备及存储介质,涉及互联网技术领域,用以解决现有技术中查询程序的代码繁琐,开发效率低的问题。该方法包括:获取分布式文档存储数据库MongoDB对应的AOP切面信息;AOP切面信息用于指示MongoDB中各数据类是否支持分页查询、各数据类的字段是否支持分页查询、各字段对应的值是否支持分页查询;接收查询请求;查询请求包括查询内容以及查询权限标识;在查询权限标识为预设标识的情况下,根据查询内容以及AOP切面信息,从MongoDB进行查询,得到查询结果;查询结果包括与查询内容匹配的支持分页查询的数据。

Description

数据查询方法、装置、电子设备及存储介质
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据查询方法、装置、电子设备及存储介质。
背景技术
随着互联网技术的发展,在可视化开发方面,通常存在用户查询数据时,后端代码对数据库进行查询,数据库一次性返回大量的数据,返回的数据条数较多,前端网络页面无法完整显示数据内容的应用场景,导致前端页面加载时间长,服务器压力大,这就需要使用列表显示和数据分页技术将数据库返回的数据使用列表分页显示。
现有技术的分页查询逻辑通常是在程序的后端代码中设置查询和处理代码,根据设置的查询代码和处理代码,对数据库进行分页查询,使查询到的数据信息经过分页处理显示在前端网络页面上。但是不同的查询内容需要设置不同的处理代码,导致项目中存在较多的相似代码,容易影响项目的开发进度,还容易出现系统安全漏洞。因此,亟需设计一种方案,减少相似代码,提高系统的开发效率。
发明内容
本申请提供一种数据查询方法、装置、电子设备及存储介质,以解决现有技术中查询程序的代码繁琐,开发效率低的问题。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种数据查询方法,该方法包括:获取分布式文档存储数据库MongoDB对应的AOP切面信息;AOP切面信息用于指示MongoDB中各数据类是否支持分页查询、各数据类的字段是否支持分页查询、各字段对应的值是否支持分页查询;接收查询请求;查询请求包括查询内容以及查询权限标识;在查询权限标识为预设标识的情况下,根据查询内容以及AOP切面信息,从MongoDB进行查询,得到查询结果;查询结果包括与查询内容匹配的支持分页查询的数据。
可选的,接收查询请求,包括:通过网络Web入口接收初始查询请求;对Web入口进行标记处理,为通过Web入口的初始查询请求添加预设的查询权限标识,得到查询请求;查询权限标识用于反映通过Web入口的初始查询请求是否有权限访问MongoDB。
可选的,获取分布式文档存储数据库MongoDB对应的AOP切面信息,包括:根据各数据类对应的属性信息,确定各数据类是否支持分页查询,根据各数据类的字段的标识,确定各数据类的字段是否支持分页查询,以及根据各字段对应的值是否为空,确定各字段对应的值是否支持分页查询,得到AOP切面信息。
可选的,根据各数据类的字段的标识,确定各数据类的字段是否支持分页查询,包括:确定各数据类的字段,为各字段设置字段标识;对于任意一个字段,在字段标识为目标标识的情况下,确定字段为支持分页查询,在字段标识为非目标标识的情况下,确定字段为不支持分页查询。
第二方面,提供一种数据查询装置,该装置包括获取单元、接收单元以及处理单元;获取单元,用于获取分布式文档存储数据库MongoDB对应的AOP切面信息;AOP切面信息用于指示MongoDB中各数据类是否支持分页查询、各数据类的字段是否支持分页查询、各字段对应的值是否支持分页查询;接收单元,用于接收查询请求,查询请求包括查询内容以及查询权限标识;处理单元,用于在查询权限标识为预设标识的情况下,根据查询内容以及AOP切面信息,从MongoDB进行查询,得到查询结果;查询结果包括与查询内容匹配的支持分页查询的数据。
可选的,接收查询请求,接收单元,具体用于:通过网络Web入口接收初始查询请求;对Web入口进行标记处理,为通过Web入口的初始查询请求添加预设的查询权限标识,得到查询请求;查询权限标识用于反映通过Web入口的初始查询请求是否有权限访问MongoDB。
可选的,获取分布式文档存储数据库MongoDB对应的AOP切面信息,获取单元,具体用于:根据各数据类对应的属性信息,确定各数据类是否支持分页查询,根据各数据类的字段的标识,确定各数据类的字段是否支持分页查询,以及根据各字段对应的值是否为空,确定各字段对应的值是否支持分页查询,得到AOP切面信息。
可选的,根据各数据类的字段的标识,确定各数据类的字段是否支持分页查询,获取单元,具体用于:确定各数据类的字段,为各字段设置字段标识;对于任意一个字段,在字段标识为目标标识的情况下,确定字段为支持分页查询,在字段标识为非目标标识的情况下,确定字段为不支持分页查询。
第三方面,提供一种电子设备,包括:处理器、用于存储处理器可执行的指令的存储器;其中,处理器被配置为执行指令,以实现上述第一方面的数据查询方法。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质上存储有指令,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如第一方面的数据查询方法。
本申请实施例提供的技术方案至少带来以下有益效果:获取分布式文档存储数据库MongoDB对应的AOP切面信息,AOP切面信息用于指示MongoDB中各数据类是否支持分页查询、各数据类的字段是否支持分页查询、各字段对应的值是否支持分页查询。接收查询请求,查询请求包括查询内容以及查询权限标识。在查询权限标识为预设标识的情况下,根据查询内容以及AOP切面信息,从MongoDB进行查询,得到查询结果;查询结果包括与查询内容匹配的支持分页查询的数据。由于对MongoDB数据库进行查询时,没有根据不同的查询内容设置不同的处理代码,而是根据MongoDB数据库,设置了对应的AOP切面信息和查询权限标识,能够设置多个切点,在程序执行时,根据切点和查询权限标识,处理查询请求和分页查询数据,高效的执行分页查询逻辑,减少项目中的相似代码,提高代码的灵活性、逻辑性以及稳定性。相较于现有技术在执行分页查询逻辑时,根据不同的查询内容设置不同的处理代码,本申请使用了AOP切面信息和查询权限标识,减少了项目中的相似代码,提高了代码的灵活性、逻辑性以及稳定性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据查询系统的结构示意图;
图2为本申请实施例提供的一种数据查询方法的流程示意图之一;
图3为本申请实施例提供的一种数据查询方法的流程示意图之二;
图4为本申请实施例提供的一种数据查询方法的流程示意图之三;
图5为本申请实施例提供的一种数据查询装置的结构示意图;
图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
还需要说明的是,本申请实施例中,“的(英文:of)”,“相应的(英文:corresponding,relevant)”和“对应的(英文:corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不是在对数量和执行次序进行限定。
在对本申请实施例进行详细地解释说明之前,先对本申请实施例涉及到的一些相关技术术语以及相关技术进行介绍。
随着互联网技术的发展,在可视化开发方面,通常存在用户查询数据时,后端代码对数据库进行查询,数据库一次性返回大量的数据,返回的数据条数较多,前端网络页面无法完整显示数据内容的应用场景,导致前端页面加载时间长,服务器压力大,这就需要使用列表显示和数据分页技术将数据库返回的数据使用列表分页显示。
本申请中使用的数据库可以为分布式文档存储数据库(MongoDB),MongoDB是一个基于分布式文件存储的数据库。由C++(c plus plus)语言编写,旨在为全球广域网(WorldWide Web,WEB)应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。在高负载的情况下,通过添加更多的节点,可以保证服务器性能。
MongoDB的存储结构区别于传统的关系型数据库,主要由三个单元组成,分别为文档(Document)、集合(Collection)以及数据库(Database)。其中,文档是MongoDB中最基本的单元,由二进制化对象表示法(Binary Structured Object Notation,BSON)键值对(key-value)组成,类似于关系型数据库中的行(Row)。一个集合可以包含多个文档,类似于关系型数据库中的表(Table)。一个数据库中可以包含多个集合,可以在MongoDB中创建多个数据库,类似于关系型数据库中的数据库。
MongoDB将数据记录存储为文档(更具体来说是BSON文档),这些文档在集合中聚集在一起,数据库中存储一个或多个文档集合。MongoDB中的记录就是一个BSON文档,它是由键值对组成的数据结构,类似于JavaScript对象简谱对象(JavaScript ObjectNotation,JSON),是MongoDB中的基本数据单元。字段的值可能包括其他文档、数组和文档数组。
BSON是一种计算机数据交换格式,主要被用作MongoDB数据库中的数据存储和网络传输格式。它是一种二进制表示形式,能用来表示简单数据结构、关联数组(MongoDB中称为“对象”或“文档”)以及MongoDB中的各种数据类型。BSON之名缘于JSON,含义为BinaryJSON(二进制JSON)。
从数据库中获取数据以及处理数据的后端代码,使用的编程语言可以为Java语言,Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
用户对数据库进行查询时,数据库一次性返回大量的数据,返回的数据条数较多,前端网络页面无法完整显示数据内容,导致前端页面加载时间长,服务器压力大,这就需要使用列表显示和数据分页技术将数据库返回的数据使用列表分页显示。
其中,数据分页技术是一种常用的页面数据显示技术,分页能够通过减少页面数据处理量从而提高了系统的性能。
在使用Java语言构建对MongoDB数据库的查询程序时,需要根据查询内容,设置不同的处理代码,导致项目中存在较多的相似代码,容易影响项目的开发进度,还容易出现系统安全漏洞。
鉴于上述问题,本申请提供了一种数据查询方法,致力于简化匹配规则的判断代码,提高网页的开发效率。
下面结合附图对本申请实施例提供的数据查询方法进行详细说明。
本申请实施例提供的数据查询方法可以适用于数据查询系统。如图1所示,数据查询系统10包括服务器11以及数据查询装置12。其中,服务器11与数据查询装置12之间可以采用有线方式连接,也可以采用无线方式连接,本申请实施例对此不作限定。
服务器11可以用于存储MongoDB数据库中的数据内容。
数据查询装置12可以用于从服务器11中获取MongoDB数据库中的数据内容,数据查询装置12根据用户请求对MongoDB数据库中的数据内容进行查询并处理,得到处理后的数据并发送给用户,具体的查询以及处理过程可以参见下述实施例,此处不再赘述。
需要说明的,服务器11可以是单独的一个服务器,也可以是有多个服务器构成的服务器集群。部分实施方式中,服务器集群还可以是分布式集群。可选地,服务器还可以在云平台上实现,例如,云平台可以包括私有云、公有云、混合云、社区云(community cloud)、分布式云、跨云(inter-cloud)、以及多云(multi-cloud)等,或者它们的任意组合。本申请实施例对此不作限制。
数据查询装置12可以是任意一款具有获取并处理数据库数据功能的终端设备,例如,用户使用的手机、平板电脑、桌面型、膝上型、笔记本电脑、超级移动个人计算机(Ultra-mobile Personal Computer,UMPC)、手持计算机、上网本、个人数字助理(PersonalDigital Assistant,PDA)、可穿戴电子设备、智能手表等设备。数据查询装置12还可以是任意具有获取并处理数据库数据功能的虚拟网络平台或虚拟网络设备。
图2是根据一些示例性实施例示出的一种数据查询方法的流程示意图。在一些实施例中,下述数据查询方法可以应用到如图1所示的数据查询系统中,也可以应用到其他类似场景。
如图2所示,本申请实施例提供的数据查询方法,包括下述S201-S203。
S201、获取分布式文档存储数据库MongoDB对应的AOP切面信息。
其中,AOP切面信息用于指示MongoDB中各数据类是否支持分页查询、各数据类的字段是否支持分页查询、各字段对应的值是否支持分页查询。
作为一种可能实现的方式,数据查询装置获取MongoDB数据库对应的AOP切面信息,AOP切面信息用于指示MongoDB数据库中各数据类是否支持分页查询、各数据类的字段是否支持分页查询、各字段对应的值是否支持分页查询。
需要说明的,面向切面编程(Aspect Oriented Programming,AOP)是通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是面向对象程序设计(Object Oriented Programming,OOP)的延续,是软件开发中的一个热点,也是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
AOP是一种编程思想,它通过把应用程序分解成多个关注点来进行开发。在AOP的设计中,我们将一些特定的行为(例如日志记录、安全检查等)从程序主体中分离出来,使得我们可以更加灵活地管理和控制这些行为。
其中,AOP可以包括五种通知类型,分别为前置通知、后置通知、返回通知、异常通知以及环绕通知。前置通知使用的注解为@Before,通常在方法执行之前执行。后置通知使用的注解为@After,通常在方法执行之后执行。返回通知使用的注解为@AfterRunning,通常在方法返回结果之后执行。异常通知使用的注解为@AfterThrowing,通常在方法抛出异常之后执行。环绕通知使用的注解为@Around,通常围绕着方法执行,环绕通知是所有通知类型中功能最为强大的,能够全面地控制连接点,甚至可以控制是否执行连接点。本申请使用的AOP通知类型为环绕通知。
这五种通知注解后面还可以跟特定的参数,来指定哪一个切面方法在哪一个方法执行时触发。通过使用切入点表达式,将AOP技术运用在项目的程序中。
通过在注解中加入切入点表达式参数,可以通过表达式的方式定位一个或多个具体的连接点。切入点表达式的语法格式规范可以为:“execution([权限修饰符][返回值类型][简单类名/全类名][方法名]([参数列表]))”。其中在表达式中有两个常用的特殊符号,星号“*”代表所有的意思,星号还可以表示任意的数值类型“.”号:“…”表示任意类型,或任意路径下的文件。
示例性的,数据查询装置获取MongoDB数据库对应的AOP切面信息,数据查询装置设置的AOP切入点表达式可以为“@Around("execution(*com.cloud.worShipCloud.controller.*.*(..))")”。根据数据查询装置设置的AOP切入点表达式,确定AOP通知类型为环绕通知,设置的通知注解为@Around,确定第一个星号“*”代表任何返回类型,确定第二个星号“*”代表路径下的任何类名,确定第三个星号“*”代表类里面的任何方法,确定“...”代表方法的任何参数。即数据查询装置可以确定配置切面为“com.cloud.worShipCloud.controller”路径下任何类的任何方法。这里仅举例说明,本申请对此不做限定。
数据查询装置根据AOP切入点表达式获取AOP切面信息,即数据查询装置根据各数据类对应的属性信息,确定各数据类是否支持分页查询,根据各数据类的字段的标识,确定各数据类的字段是否支持分页查询,以及根据各字段对应的值是否为空,确定各字段对应的值是否支持分页查询,得到AOP切面信息。
示例性的,数据查询装置将MongoDB数据库中的字段信息封装成数据类,数据查询装置根据数据类AdminUserInfo对应的属性信息,确定AdminUserInfo类是否支持分页查询。其中,AdminUserInfo类为业务实体类,同时也是分页查询信息封装类。数据查询装置获取被代理类对象Class类,并显示对象的Class名AdminUserInfo,判断被代理类对象的属性信息,得到判断结果,根据判断结果,确定数据类是否支持分页查询。
数据查询装置确定各数据类的字段,为各字段设置字段标识。数据查询装置确定AdminUserInfo类中的字段,AdminUserInfo类包含较多字段信息,例如,页数(pageSize)、页(page)、真实姓名(realName)、电话(phone)以及性别(sex)等字段信息。数据查询装置根据字段信息标注的标识,确定字段是否支持分页查询。即数据查询装置可以根据字段对应的不同字段标识,确定字段是否支持作为分页查询关键,以及查询后是否能够返回给数据查询装置。
数据查询装置对于任意一个字段,在字段标识为目标标识的情况下,确定字段为支持分页查询,在字段标识为非目标标识的情况下,确定字段为不支持分页查询。即数据查询装置对于任意一个字段,在字段标识为目标标识的情况下,确定字段为支持分页查询,但无法返回给用户查看。在字段标识为非目标标识的情况下,确定字段为不支持分页查询。
示例性的,数据查询装置为各字段设置字段标识,数据查询装置设置字段标识为非目标标识,即数据查询装置设置@PagerIgnore字段标识为分页查询标识,表明哪些字段不作为分页查询关键,即用户无法使用标有@PagerIgnore字段标识的字段对MongoDB数据库中的数据进行查询。数据查询装置设置字段标识为目标标识,即数据查询装置设置@JsonIgnore字段标识为数据返回标识,表明哪些字段作为机密数据,无法返回给用户查看,即用户无法查看标有@JsonIgnore字段标识的字段,对应在MongoDB数据库中的数据。
数据查询装置为页数(pageSize)、页(page)、用户序号(userId)、真实姓名(realName)、电话(phone)、性别(sex)以及密码(password)等字段信息,设置字段标识。数据查询装置为页数(pageSize)、页(page)以及密码(password)设置@JsonIgnore字段标识,为用户序号(userId)以及密码(password)设置@PagerIgnore字段标识。数据查询装置根据字段信息对应的字段标识,确定用户序号(userId)以及密码(password)字段不作为分页查询关键,确定页数(pageSize)、页(page)以及密码(password)作为机密数据,不返回给用户查看,确定真实姓名(realName)、电话(phone)以及性别(sex)可以作为分页查询关键并返回给用户查看。
S202、接收查询请求。
其中,查询请求包括查询内容以及查询权限标识。
作为一种可能实现的方式,数据查询装置获取MongoDB数据库对应的AOP切面信息后,接收用户的查询请求。查询请求包括查询内容以及查询权限标识。
数据查询装置通过网络Web入口接收初始查询请求,对Web入口进行标记处理,为通过Web入口的初始查询请求添加预设的查询权限标识,得到查询请求。查询权限标识用于反映通过Web入口的初始查询请求是否有权限访问MongoDB。
需要说明的,用户的查询请求可以为HTTP请求,HTTP请求是指从客户端到服务器端的请求消息。包括:消息首行中,对资源的请求方法、资源的标识符及使用的协议。
数据查询装置可以设置网络Web入口的相关信息,Web入口可以包含一个网络Web接口,数据查询装置设置该接口的相关网络信息,例如请求方式以及请求路径等网络信息。
示例性的,数据查询装置可以设置网络Web接口的请求方式为POST请求,即HTTP的response请求,请求路径为“/userInfo”。数据查询装置通过网络Web入口,接收用户的初始查询请求,对Web入口进行标记处理。即数据查询装置通过网络Web入口,接收用户的初始查询请求,对用户的初始查询请求进行处理。数据查询装置根据用户初始查询请求中包含的信息进行处理。例如,若发起请求的用户为普通用户,不具备查询MongoDB数据库的权限,数据查询装置将用户发起的请求驳回。若发起请求的用户为管理员,具备查询MongoDB数据库的权限,用户发起的请求可以通过Web入口,数据查询装置将用户发起的请求进行处理,根据Web入口的标记处理,将通过Web入口的初始查询请求添加预设的查询权限标识@MongdbQueryPager,数据查询装置确定查询请求。
S203、在查询权限标识为预设标识的情况下,根据查询内容以及AOP切面信息,从MongoDB进行查询,得到查询结果。
其中,查询结果包括与查询内容匹配的支持分页查询的数据。
作为一种可能实现的方式,数据查询装置在查询权限标识为预设标识的情况下,根据查询内容以及AOP切面信息,从MongoDB数据库中的数据进行查询,得到查询结果,查询结果包括与查询内容匹配的支持分页查询的数据。
示例性的,数据查询装置根据JAVA反射技术,获取处理后的查询请求,确定查询请求的查询权限标识,若查询请求中包含查询权限标识@MongdbQueryPager,数据查询装置确定查询请求的查询权限标识为预设标识。数据查询装置根据用户设置的查询内容,对MongoDB数据库中的数据进行查询,得到查询结果。用户设置的查询内容可以为MongoDB数据库中的字段信息,也可以为字段对应的数据,例如,查询MongoDB数据库中的所有真实姓名(realName),或真实姓名(realName)为“张三”对应的所有数据信息等等。数据查询装置根据用户选择需要查询的字段信息,对应的字段标识,将查询的数据进行分页处理,并发送给用户。
需要说明的,JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
示例性的,如图3所示,数据查询系统启动,开始执行系统程序,系统根据程序自动创建基于指定路径的AOP切面,用户发起网络查询请求,请求AOP切面内的WEB入口方法。数据查询装置根据JAVA反射技术,将查询请求转化为查询方法,并获取处理后的查询方法,判断查询方法是否标记有查询权限标识@MongdbQueryPager。若查询方法没有被标记查询权限标识@MongdbQueryPager,则该查询方法无法对MongoDB数据库中的数据进行查询,数据查询装置按照执行逻辑,对该查询方法进行处理。即按照controller,service,MongoDB的顺序将查询方法退回。若查询方法有被标记查询权限标识@MongdbQueryPager,则该查询方法可以对MongoDB数据库中的数据进行查询,数据查询装置按照查询逻辑,获取查询方法中的请求信息,包括分页信息和查询关键字信息。
数据查询装置根据MongoDB数据库的数据存储特点,获取查询的信息和分页信息。即在MongoDB数据库的存储内容信息中,数据查询装置将MongoDB数据库中存储实体的字段信息设为key,将MongoDB数据库中存储实体字段对应的具体值信息设为value。数据查询装置根据JAVA反射技术,获取查询方法中的分页信息、查询关键字的字段名以及字段对应的具体数值,将查询关键字的字段名作为对MongoDB数据库查询方法中的key,字段对应的具体数值作为对MongoDB数据库查询方法中的value,组装出分页查询的相关信息,并将其封装为分页查询封装对象。数据查询装置根据分页查询封装对象,通过相应的接口对MongoDB数据库查询,查询出符合条件的数据记录,并进行分页处理,对数据进行统一封装后返回给用户。
示例性的,如图4所示,数据查询装置中的AOP切面处理逻辑具体包括:数据查询装置从AOP切面设置的切点,获取并拦截接口的所有输入参数列表,即获取查询方法。数据查询装置判断参数列表是否为空,若参数列表为空,则数据查询装置不做拦截处理,按照程序逻辑执行返回,结束本次操作。若参数列表不为空,数据查询装置依次获取参数列表中的被代理对象、被代理方法以及被代理方法入参类型列表,判断被代理对象是否被标记查询权限标识@MongdbQueryPager,若未被标记,数据查询装置按照程序逻辑执行返回,结束本次操作。若被标记,数据查询装置根据JAVA反射技术,依次循环处理被代理方法中入参对象的每个字段。即数据查询装置判断入参对象的字段,是否被标记@PagerIgnore字段标识,若该字段被标记,数据查询装置结束对该字段的处理,执行被代理方法中入参对象的下一个字段。若该字段没有被标记,数据查询装置确定该字段参与关键字检索,进行下一步。
数据查询装置根据JAVA反射技术,获取该字段的名称以及数值,若该字段的数值为空,数据查询装置结束对该字段的处理,执行被代理方法中入参对象的下一个字段。若该字段的数值不为空,数据查询装置判断该字段是否为分页信息字段,即页数(pageSize)或页(page),若该字段为分页信息字段,数据查询装置提取相应值,等待封装分页信息类时使用。若该字段不为分页信息字段,数据查询装置以其字段名称作为对MongoDB数据库查询的关键字的字段名key,对应的值为查询的关键字对应的数值value,并对MongoDB数据库的查询条件加入查询对象。数据查询装置判断入参对象字段中是否还有未处理字段,若有,数据查询装置执行被代理方法中入参对象的下一个字段。
数据查询装置设置查询条件字段“_class”,将其设置为当前被代理方法的入参对象的完全路径名,即MongoDB数据库存储功能业务数据时,会自动加入“_class”字段信息,其对应的值为当前存储对象的完全路径名,数据查询装置可以根据这些信息,区分不同业务实体的存储数据标记。数据查询装置调用应用程序编程(Application ProgrammingInterface,API)接口,统计符合查询条件的总记录数,若记录数小于或等于0,数据查询装置将所有信息封装,按照执行逻辑,将其返回给WEB调用端展示,避免对MongoDB数据库的无用查询,减轻MongoDB数据库的查询压力。若记录数大于0,数据查询装置调用API接口,对MongoDB数据库进行查询,查询指出指定信息,将其封装并按照执行逻辑,将其返回给WEB调用端展示,数据查询装置结束本次切面处理逻辑。
示例性的,数据查询装置启动系统,用户可以使用接口测试工具Postman,发起get/post请求,且请求地址可以为“http://localhost:8080/userInfo/query”,且请求中设置字段pageSize的值为5,即每页显示5条记录,字段page为0,即页码从0开始,表示第一页,查询MongoDB数据库中字段realName为test111的用户信息。数据查询装置将查询到的信息封装返回,并根据字段对应的字段标识,对获取到的MongoDB数据库中的数据进行处理,将处理后的数据返回给用户,供用户查看,即将{"code":"0","msg":"操作成功","total":1,"userId":"1121124818171740160","realName":"test111","phone":"11111111111","sex":0,"updateTime":1687339913457,"pageSize":5,"page":0}封装后返回给数据查询装置,数据查询装置对其进行处理,得到{"realName":"test111","phone":"11111111111","sex":0},并将其返回给用户查看。
数据查询装置使用接口测试工具Postman,得到相应的测试结果,即测验用例执行结果code为“-1”(非0代表失败),msg代表成功或者失败的提示信息,result.total为满足条件的所有记录数,result.pageSize为每页显示记录数量,result.page为当前页码,result.data为返回数据列表信息,其中使用@JsonIgnore标记的敏感字段信息并未返回。根据测试结果,数据查询装置判断验证结果符合预期需求,系统能够实现根据用户请求,对MongoDB数据库中的数据进行分页查询的功能。
本申请实施例提供的技术方案至少带来以下有益效果:获取分布式文档存储数据库MongoDB对应的AOP切面信息,AOP切面信息用于指示MongoDB中各数据类是否支持分页查询、各数据类的字段是否支持分页查询、各字段对应的值是否支持分页查询。接收查询请求,查询请求包括查询内容以及查询权限标识。在查询权限标识为预设标识的情况下,根据查询内容以及AOP切面信息,从MongoDB进行查询,得到查询结果;查询结果包括与查询内容匹配的支持分页查询的数据。由于对MongoDB数据库进行查询时,没有根据不同的查询内容设置不同的处理代码,而是根据MongoDB数据库,设置了对应的AOP切面信息和查询权限标识,能够设置多个切点,在程序执行时,根据切点和查询权限标识,处理查询请求和分页查询数据,高效的执行分页查询逻辑,减少项目中的相似代码,提高代码的灵活性、逻辑性以及稳定性。相较于现有技术在执行分页查询逻辑时,根据不同的查询内容设置不同的处理代码,本申请使用了AOP切面信息和查询权限标识,减少了项目中的相似代码,提高了代码的灵活性、逻辑性以及稳定性。
上述实施例主要从装置(设备)的角度对本申请实施例提供的方案进行了介绍。可以理解的是,为了实现上述方法,装置或设备包含了执行各个方法流程相应的硬件结构和/或软件模块,这些执行各个方法流程相应的硬件结构和/或软件模块可以构成一个物料信息的确定装置。本领域技术人员应该很容易意识到,结合本文中所发明的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对装置或设备进行功能模块的划分,例如,装置或设备可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图5是根据一示例性实施例示出的数据查询装置的结构示意图。参照图5所示,本申请实施例提供的数据查询装置30包括获取单元301、接收单元302以及处理单元303。
获取单元301,用于获取分布式文档存储数据库MongoDB对应的AOP切面信息;AOP切面信息用于指示MongoDB中各数据类是否支持分页查询、各数据类的字段是否支持分页查询、各字段对应的值是否支持分页查询;接收单元302,用于接收查询请求,查询请求包括查询内容以及查询权限标识;处理单元303,用于在查询权限标识为预设标识的情况下,根据查询内容以及AOP切面信息,从MongoDB进行查询,得到查询结果;查询结果包括与查询内容匹配的支持分页查询的数据。
可选的,接收查询请求,接收单元302,具体用于:通过网络Web入口接收初始查询请求;对Web入口进行标记处理,为通过Web入口的初始查询请求添加预设的查询权限标识,得到查询请求;查询权限标识用于反映通过Web入口的初始查询请求是否有权限访问MongoDB。
可选的,获取分布式文档存储数据库MongoDB对应的AOP切面信息,获取单元301,具体用于:根据各数据类对应的属性信息,确定各数据类是否支持分页查询,根据各数据类的字段的标识,确定各数据类的字段是否支持分页查询,以及根据各字段对应的值是否为空,确定各字段对应的值是否支持分页查询,得到AOP切面信息。
可选的,根据各数据类的字段的标识,确定各数据类的字段是否支持分页查询,获取单元301,具体用于:确定各数据类的字段,为各字段设置字段标识;对于任意一个字段,在字段标识为目标标识的情况下,确定字段为支持分页查询,在字段标识为非目标标识的情况下,确定字段为不支持分页查询。
图6是本申请提供的一种电子设备的结构示意图。如图6,该电子设备40可以包括至少一个处理器401以及用于存储处理器可执行指令的存储器402其中,处理器401被配置为执行存储器402中的指令,以实现上述实施例中的数据查询方法。
另外,电子设备40还可以包括通信总线403以及至少一个通信接口404。
处理器401可以是一个处理器(central processing units,CPU),微处理单元,ASIC,或一个或多个用于控制本申请方案程序执行的集成电路。
通信总线403可包括一通路,在上述组件之间传送信息。
通信接口404,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
存储器402可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器401相连接。存储器402也可以和处理器401集成在一起。
其中,存储器402用于存储执行本申请方案的指令,并由处理器401来控制执行。处理器401用于执行存储器402中存储的指令,从而实现本申请方法中的功能。
作为一个示例,结合图5,数据查询装置30中的获取单元301以及处理单元302实现的功能与图6中的处理器401的功能相同。
在具体实现中,作为一种实施例,处理器401可以包括一个或多个CPU,例如图6中的CPU0和CPU1。
在具体实现中,作为一种实施例,电子设备40可以包括多个处理器,例如图6中的处理器401和处理器407。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,电子设备40还可以包括输出设备405和输入设备406。输出设备405和处理器401通信,可以以多种方式来显示信息。例如,输出设备405可以是液晶显示器(liquid crystal display,LCD),发光二极管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备406和处理器401通信,可以以多种方式获取用户对象的输入。例如,输入设备406可以是鼠标、键盘、触摸屏设备或传感设备等。
本领域技术人员可以理解,图6中示出的结构并不构成对电子设备40的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
另外,本申请还提供一种计算机可读存储介质,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述实施例所提供的数据查询方法。
另外,本申请还提供一种计算机程序产品,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如上述实施例所提供的数据查询方法。
本领域技术人员在考虑说明书及实践这里发明的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求指出。

Claims (10)

1.一种数据查询方法,其特征在于,所述方法包括:
获取分布式文档存储数据库MongoDB对应的AOP切面信息;所述AOP切面信息用于指示所述MongoDB中各数据类是否支持分页查询、各数据类的字段是否支持分页查询、各字段对应的值是否支持分页查询;
接收查询请求;所述查询请求包括查询内容以及查询权限标识;
在所述查询权限标识为预设标识的情况下,根据所述查询内容以及所述AOP切面信息,从所述MongoDB进行查询,得到查询结果;所述查询结果包括与所述查询内容匹配的支持分页查询的数据。
2.根据权利要求1所述的方法,其特征在于,所述接收查询请求,包括:
通过网络Web入口接收初始查询请求;
对所述Web入口进行标记处理,为通过所述Web入口的初始查询请求添加预设的查询权限标识,得到所述查询请求;所述查询权限标识用于反映通过所述Web入口的初始查询请求是否有权限访问所述MongoDB。
3.根据权利要求1所述的方法,其特征在于,所述获取分布式文档存储数据库MongoDB对应的AOP切面信息,包括:
根据各数据类对应的属性信息,确定各数据类是否支持分页查询,根据各数据类的字段的标识,确定各数据类的字段是否支持分页查询,以及根据各字段对应的值是否为空,确定各字段对应的值是否支持分页查询,得到所述AOP切面信息。
4.根据权利要求3所述的方法,其特征在于,所述根据各数据类的字段的标识,确定各数据类的字段是否支持分页查询,包括:
确定各数据类的字段,为各字段设置字段标识;
对于任意一个字段,在所述字段标识为目标标识的情况下,确定所述字段为支持分页查询,在所述字段标识为非目标标识的情况下,确定所述字段为不支持分页查询。
5.一种数据查询装置,其特征在于,所述装置包括获取单元、接收单元以及处理单元;
所述获取单元,用于获取分布式文档存储数据库MongoDB对应的AOP切面信息;所述AOP切面信息用于指示所述MongoDB中各数据类是否支持分页查询、各数据类的字段是否支持分页查询、各字段对应的值是否支持分页查询;
所述接收单元,用于接收查询请求,所述查询请求包括查询内容以及查询权限标识;
所述处理单元,用于在所述查询权限标识为预设标识的情况下,根据所述查询内容以及所述AOP切面信息,从所述MongoDB进行查询,得到查询结果;所述查询结果包括与所述查询内容匹配的支持分页查询的数据。
6.根据权利要求5所述的装置,其特征在于,所述接收查询请求,所述接收单元,具体用于:
通过网络Web入口接收初始查询请求;
对所述Web入口进行标记处理,为通过所述Web入口的初始查询请求添加预设的查询权限标识,得到所述查询请求;所述查询权限标识用于反映通过所述Web入口的初始查询请求是否有权限访问所述MongoDB。
7.根据权利要求5所述的装置,其特征在于,所述获取分布式文档存储数据库MongoDB对应的AOP切面信息,所述获取单元,具体用于:
根据各数据类对应的属性信息,确定各数据类是否支持分页查询,根据各数据类的字段的标识,确定各数据类的字段是否支持分页查询,以及根据各字段对应的值是否为空,确定各字段对应的值是否支持分页查询,得到所述AOP切面信息。
8.根据权利要求7所述的装置,其特征在于,所述根据各数据类的字段的标识,确定各数据类的字段是否支持分页查询,所述获取单元,具体用于:
确定各数据类的字段,为各字段设置字段标识;
对于任意一个字段,在所述字段标识为目标标识的情况下,确定所述字段为支持分页查询,在所述字段标识为非目标标识的情况下,确定所述字段为不支持分页查询。
9.一种电子设备,其特征在于,包括:处理器、用于存储所述处理器可执行的指令的存储器;其中,所述处理器被配置为执行指令,以实现权利要求1-4中任一项所述的数据查询方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1-4中任一项所述的数据查询方法。
CN202311257832.7A 2023-09-26 2023-09-26 数据查询方法、装置、电子设备及存储介质 Pending CN117633330A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311257832.7A CN117633330A (zh) 2023-09-26 2023-09-26 数据查询方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311257832.7A CN117633330A (zh) 2023-09-26 2023-09-26 数据查询方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117633330A true CN117633330A (zh) 2024-03-01

Family

ID=90027650

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311257832.7A Pending CN117633330A (zh) 2023-09-26 2023-09-26 数据查询方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117633330A (zh)

Similar Documents

Publication Publication Date Title
EP3726411B1 (en) Data desensitising method, server, terminal, and computer-readable storage medium
CN109964216B (zh) 识别未知数据对象
US10387171B2 (en) Configurable development platform integrating heterogeneous persistence systems
US20180196643A1 (en) Generating web api specification from online documentation
CN109635019B (zh) 请求处理方法、装置、设备及存储介质
CN110019080B (zh) 数据访问方法和装置
US11762775B2 (en) Systems and methods for implementing overlapping data caching for object application program interfaces
CN111443901B (zh) 一种基于Java反射的业务扩展方法及装置
CN112000992B (zh) 数据防泄漏保护方法、装置、计算机可读介质及电子设备
CN110764769B (zh) 处理用户请求的方法和装置
CN112446022A (zh) 数据权限控制方法、装置、电子设备及存储介质
CN113407997A (zh) 数据脱敏方法、装置、计算机设备及存储介质
CN112527504A (zh) 多租户的资源配额管理方法、装置、计算机设备
CN115587575A (zh) 数据表创建方法、目标数据查询方法、装置及设备
CN110109983B (zh) 一种操作Redis数据库的方法和装置
US20210263898A1 (en) Reducing response time for queries directed to domain-specific knowledge graph using property graph schema optimization
CN113076153A (zh) 一种接口调用方法和装置
CN108959294B (zh) 一种访问搜索引擎的方法和装置
CN112650804B (zh) 大数据接入方法、装置、系统及存储介质
CN110874365B (zh) 一种信息查询方法及其相关设备
CN111752964A (zh) 基于数据接口的数据处理方法及装置
CN117633330A (zh) 数据查询方法、装置、电子设备及存储介质
CN114840574A (zh) 数据查询方法、服务器、节点及存储介质
CN113157722A (zh) 一种数据处理方法、装置、服务器、系统及存储介质
CN115017185A (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