一种基于注解的数据查询方法、数据查询设备及存储介质技术

技术编号:23085024 阅读:19 留言:0更新日期:2020-01-11 01:08
本发明专利技术涉及一种基于注解的数据查询方法、数据查询设备及存储介质,其中方法包括步骤:获取VO对象的get方法列表;得到该列表中的值;判断该值不为空后,判断是否使用了@Where注解;若是则继续判断等值查询还是非等值查询;为等值查询,则通过Java反射获取返回值,并进行SQL的动态组装;为非等值查询,则将查询语句中的@Where注解后属性中的问号替换为所获取的值,并进行SQL拼接;根据动态组装后的SQL查询语句或拼接后的SQL查询语句进行数据查询。本发明专利技术所提供的基于注解的数据查询方法,使得开发人员在处理查询逻辑时,能够专注于当前条件的逻辑,不会与其他的查询逻辑耦合在一起,降低了开发及维护难度。

An annotation based data query method, data query equipment and storage medium

【技术实现步骤摘要】
一种基于注解的数据查询方法、数据查询设备及存储介质
本专利技术涉及数据中心
,特别是涉及一种基于注解的数据查询方法、数据查询设备及存储介质。
技术介绍
数据库是管理系统中的重要组成部分,管理人员对于数据库的操作一般有增删改查四种,其中查询操作的占比通常在70%左右,是整个管理系统中最为重要的服务之一。在一个管理系统初步确定后,要想在此基础上提供更多样化的查询服务,通常的实现方式是:在表单中增加一个输入项,后端代码获取所述输入项中的值,然后根据所获取的值动态的组装SQL(StructuredQueryLanguage,结构化查询语言),最终执行语句以获取数据集。其中,在表单增加输入项的操作基本是无法避免的,但由于改动难度并不大,因此,该部分操作可以忽略不计。但后端代码则不同,需要大量的逻辑判断及SQL组装,一旦查询条件较多,就容易因存在大量的if/else语句,导致系统维护困难。因此,现有技术还有待改进。
技术实现思路
基于此,有必要针对上述技术问题,提供一种基于注解的数据查询方法、数据查询设备及存储介质,旨在解决现有技术中在管理系统中增加查询服务需要使用大量的逻辑判断及SQL组装,导致系统维护困难的问题。本专利技术的技术方案如下:一种基于注解的数据查询方法,其包括:获取VO对象的get方法列表;遍历所述get方法列表,并执行get方法得到该get方法列表中的值;判断所得到的值是否为空,若不为空则继续判断该值是否使用了@Where注解;若该值使用了@Where注解,则继续判断所述@Where注解后是否设置有属性,若否则该值所对应的查询请求为等值查询,若是则该值所对应的查询请求为非等值查询;当判断为等值查询时,通过Java反射获取get方法的返回值,并根据所述返回值进行SQL查询语句的动态组装;当判断为非等值查询时,将查询语句中的@Where注解后属性中的问号替换为所获取的值,并在处理in查询条件及like查询条件后进行SQL拼接;根据动态组装后的SQL查询语句或拼接后的SQL查询语句进行数据查询。在进一步地优选方案中,进行SQL查询语句的动态组装的过程具体为:获取@Colume注解的name属性的值,作为SQL查询语句的左部,并通过Java反射获取get方法的返回值,作为SQL查询语句的右部。在进一步地优选方案中,所述获取@Colume注解的name属性的值,作为SQL查询语句的左部,并通过Java反射获取get方法的返回值,作为SQL查询语句的右部的步骤还包括:根据所获取返回值的类型,确定SQL查询语句的右部是否需用单引号括起来。在进一步地优选方案中,所述非等值查询包括:不等值查询,所述不等值查询的查询语句中的@Where注解后附加有sql属性。在进一步地优选方案中,所述非等值查询包括:直接in查询,所述直接in查询的查询语句中的@Where注解后附加有isArrayString属性。在进一步地优选方案中,所述非等值查询包括:间接in查询,所述间接in查询的查询语句中的@Where注解后附加有逻辑查询注解。在进一步地优选方案中,所述非等值查询包括:单逻辑映射查询,所述单逻辑映射查询的查询语句将被转换成一个SQL片段,用于后续的拼接处理。在进一步地优选方案中,所述非等值查询包括:多逻辑映射查询,所述多逻辑映射查询的查询语句将根据前端条件值,选择使用多个逻辑中的一个进行查询,并被转换成一个条件SQL片段,用于后续的拼接处理。一种数据查询设备,其包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于执行如上所述的方法。一种存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如上任一项所述的基于注解的数据查询方法的步骤。与现有技术相比,本专利技术提供的基于注解的数据查询方法,包括步骤:获取VO对象的get方法列表;遍历所述get方法列表,并执行get方法得到该get方法列表中的值;判断所得到的值是否为空,若不为空则继续判断该值是否使用了@Where注解;若该值使用了@Where注解,则继续判断所述@Where注解后是否设置有属性,若否则该值所对应的查询请求为等值查询,若是则该值所对应的查询请求为非等值查询;当判断为等值查询时,通过Java反射获取get方法的返回值,并根据所述返回值进行SQL查询语句的动态组装;当判断为非等值查询时,将查询语句中的@Where注解后属性中的问号替换为所获取的值,并在处理in查询条件及like查询条件后进行SQL拼接;根据动态组装后的SQL查询语句或拼接后的SQL查询语句进行数据查询。基于此,本专利技术所提供的基于注解的数据查询方法,通过将关键的查询条件以注解的方式进行声明,在统一查询接口中,通过Java反射将注解信息和VO对象信息提取出来并组装成SQL查询语句进行查询,实现了条件的动态组装,使得开发人员在处理查询逻辑时,能够专注于当前条件的逻辑,不会与其他的查询逻辑耦合在一起,降低了开发及维护难度。附图说明图1是本专利技术优选实施例中基于注解的数据查询方法的流程图。图2是本专利技术优选实施例中数据查询设备的功能原理框图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。现有技术通过在后端代码获取输入项的值,然后根据值动态组装SQL查询语句,最后执行该SQL查询语句进行查询的方式,需要使用if/else语句。查询条件较多,则相应的后端代码中if/else语句就较多,如下方代码所示:对于开发人员而言,不仅开发难度较大,而且后期维护难度亦较大。本专利技术提供了一种基于注解的数据查询方法,如图1所示,其包括步骤:S100、获取VO对象的get方法列表。S200、遍历所述get方法列表,并执行get方法得到该get方法列表中的值。S300、判断所得到的值是否为空,若不为空则继续判断该值是否使用了@Where注解,若未使用@Where注解则进行下一个值的判断。若某一个值为空,说明用户并未在该值对应的输入栏输入查询条件,则该值不作处理,亦不记入查询条件;若该值非VO列表中的最后一个值,则继续进行下一个值的获取;若该值为VO列表中的最后一个值,则继续进行下一步。通过分析业务中出现的查询场景,本专利技术将查询分为简单查询和复杂查询,通过@Where注解之后是否设置有属性即可判断是简单查询(即等值查询),还是复杂查询(除等值查询外,其余查询请求皆被视为复杂查询)。也就是说,若该值使用了@Where注解且未设置任何属性,则该值所对应的查询请求为等值查询;若该值使用了@Where注解且设置有属性,则该值所对应的查询请求为非等值查询。...

【技术保护点】
1.一种基于注解的数据查询方法,其特征在于,包括:/n获取VO对象的get方法列表;/n遍历所述get方法列表,并执行get方法得到该get方法列表中的值;/n判断所得到的值是否为空,若不为空则继续判断该值是否使用了@Where注解;若该值使用了@Where注解,则继续判断所述@Where注解后是否设置有属性,若否则该值所对应的查询请求为等值查询,若是则该值所对应的查询请求为非等值查询;/n当判断为等值查询时,通过Java反射获取get方法的返回值,并根据所述返回值进行SQL查询语句的动态组装;/n当判断为非等值查询时,将查询语句中的@Where注解后属性中的问号替换为所获取的值,并在处理in查询条件及like查询条件后进行SQL拼接;/n根据动态组装后的SQL查询语句或拼接后的SQL查询语句进行数据查询。/n

【技术特征摘要】
1.一种基于注解的数据查询方法,其特征在于,包括:
获取VO对象的get方法列表;
遍历所述get方法列表,并执行get方法得到该get方法列表中的值;
判断所得到的值是否为空,若不为空则继续判断该值是否使用了@Where注解;若该值使用了@Where注解,则继续判断所述@Where注解后是否设置有属性,若否则该值所对应的查询请求为等值查询,若是则该值所对应的查询请求为非等值查询;
当判断为等值查询时,通过Java反射获取get方法的返回值,并根据所述返回值进行SQL查询语句的动态组装;
当判断为非等值查询时,将查询语句中的@Where注解后属性中的问号替换为所获取的值,并在处理in查询条件及like查询条件后进行SQL拼接;
根据动态组装后的SQL查询语句或拼接后的SQL查询语句进行数据查询。


2.根据权利要求1所述的基于注解的数据查询方法,其特征在于,进行SQL查询语句的动态组装的过程具体为:获取@Colume注解的name属性的值,作为SQL查询语句的左部,并通过Java反射获取get方法的返回值,作为SQL查询语句的右部。


3.根据权利要求2所述的基于注解的数据查询方法,其特征在于,所述获取@Colume注解的name属性的值,作为SQL查询语句的左部,并通过Java反射获取get方法的返回值,作为SQL查询语句的右部的步骤还包括:根据所获取返回值的类型,确定SQL查询语句的右部是否需用单引号括起来。


4.根据权利要求1所述的基于注解的数据查...

【专利技术属性】
技术研发人员:季敏杨瀛
申请(专利权)人:南京紫津融畅信息科技服务有限公司
类型:发明
国别省市:江苏;32

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

1