掌桥专利:专业的专利平台
掌桥专利
首页

基于java Map快速查询条件封装方法、装置及可读介质

文献发布时间:2024-01-17 01:14:25


基于java Map快速查询条件封装方法、装置及可读介质

技术领域

本发明涉及计算机技术领域,尤其涉及一种基于javaMap快速查询条件封装方法、装置及可读介质。

背景技术

基于javaweb开发的网站、应用、APP等数不胜数,在需要进行数据搜索时就需要前后端协同基于关键字、字段完成搜索,在编写搜索方法、功能时,只需要关注搜索的字段在前端进行简易的配置,后台即可基于javaMap进行快速条件语句封装进行查询,并返回检索数据。

目前基于java开发的应用在ORM层最常见的有MyBatis、Hibernate、JPA等框架,在运用这些ORM进行对象关系映射查询时,都可使用SQL语句、HQL(Hibernate特有的hql对象语法)进行查询。在以往的开发过程中会存在以下一些问题:

(1)后台条件判断层需要将使用到的每个查询的字段、关键字进行处理,补充条件查询语句,并且还需要区分模糊查询和精准查询。

(2)前端的页面需要将使用到的查询条件、字段和后台一一对应,如果前端增加查询条件,后台未编写条件语句,则该查询条件无效。

(3)增加查询条件时一般前端、后台都需要进行相关的条件追加和判断,并且后台增加后还需重启项目才可生效。

目前条件构造器比较多,但都需要依赖其他第三方,并且对于基础的查询还是需要进行针对性的编码。因此,有必要提出一种新的技术方案。

发明内容

为解决现有技术中存在的技术问题,本发明公开了一种基于java Map快速查询条件封装方法及系统。

一方面,本发明提供一种基于java Map快速查询条件封装方法,其包括:

前端发起查询,输入查询信息;张三,分数90,语文;

初始化查询辅助对象:根据查询信息,将查询信息初始化到查询MAP中;

根据初始化的查询MAP,组装与查询MAP对应的SQL语句,获得组装查询语句,输出查询结果。

判断是否输入排序条件;

若是,则根据前端输入的排序需求对查询结果进行排序;

输出最终查询语句并发送至数据库;

返回最终检索结果。

进一步地,还包括定义待SQL语句,通过自定义SQL语句预定默认sql条件。。

进一步地,查询MAP包括精准查询Map、模糊查询Map、不相等Map,时间条件和默认参数条件。

进一步地,查询MAP还包括数字比对构造器、排序构造器、参数构造器。

进一步地,

初始化查询辅助对象:根据查询信息,将查询信息初始化到查询MAP中具体包括:

将查询信息使用“=”初始化到精确查询MAP中;

将查询信息使用“like”初始化到模糊查询MAP中;

将查询信息使用“<>”初始化到不相等MAP中;

将查询信息初始化到时间条件;

将查询信息初始化到默认参数条件。

进一步地,根据初始化的查询MAP,组装与查询MAP对应的SQL语句,获得组装查询语句,输出查询结果,具体包括:

根据初始化的精准查询Map拼装精准查询语句;

根据初始化的模糊查询Map拼装精准查询语句;

根据初始化的模糊查询Map拼装精准查询语句;

根据初始化的构造时间条件拼装时间范围查询语句;

根据初始化的默认参数条件拼装默认参数。

进一步地,若否,则输出最终查询语句并发送至数据库,返回最终检索结果。

另一方面,本发明还提供一种基于javaMap快速查询条件封装装置,其包括,

输入模块,其用于前端发起查询,输入查询信息;

初始化模块,其用于初始化查询辅助对象,根据查询信息,将查询信息初始化到查询MAP中;

组装模块,其用于根据初始化的查询MAP,组装与查询MAP对应的SQL语句,获得组装查询语句,输出查询结果;

判断模块,其用于判断是否输入排序条件;

排序模块,其用于若判断为输入排序条件,则根据前端输入的排序需求对查询结果进行排序;

发送模块,其用于将最终查询语句并发送至数据库;

结果输出模块,其用于返回最终检索结果。

再一方面,本发明还提供一种计算机可读介质,所述可读介质存储有执行上述方法的计算机程序。

本发明基于java Map快速查询条件封装的方法,具有如下有益效果:

本发明基于java Map快速查询条件封装的方法,有效的简化、减少编码及第三方依赖,并具有高度的灵活配置性,可即时修改即时生效,具有较高的实用性。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

图1为本发明实施例中基于javaMap快速查询条件封装方法系统框图。

具体实施方式

为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明的具体实施方式、结构、特征及其功效,详细说明如下。

为了实现快速的查询封装,首先需要构造查询辅助类,里面包含各种查询条件的javaMap。其次需要对javaMap进行分类定义(例如模糊查询、精准查询等)。最后对封装在javaMap中的各种条件进行构造,返回最终的语句。端只需要关注后台表或实体有哪些字段即可配置搜索条件。

请参阅图1,本发明提供一种基于javaMap快速查询条件封装方法,所述方法包括:

前端发起查询,输入查询信息。例如:查询【姓名】包含“张”,【分数】大于“90”,【科目】等于“语文”。

初始化查询辅助对象:根据查询信息,将查询信息初始化(或封装)到各个不同的查询MAP中,即前端或后端通过查询MAP对查询信息进行处理。

根据初始化的不同查询MAP,组装与查询MAP对应的SQL语句,获得组装查询语句,输出查询结果。

判断是否输入排序条件。

若是,则根据前端输入的排序需求对查询结果进行排序;

输出最终查询语句并发送至数据库;

返回最终检索结果。

若判断结果为否,则输出最终查询语句并发送至数据库,返回最终检索结果。

本发明的方法还包括定义待SQL语句,通过自定义SQL语句预定默认sql条件。例如:默认追加逻辑状态等于“未删除”。定义待查询SQL语句包括定义子查询语句、连表语句。在一个实施例中,对于复杂的子查询、复杂的连表查询需要进行自定义编写。

初始化查询辅助对象。根据上一步前端输入的查询信息,将信息初始化到不同的查询Map中,例如:包含初始化到“模糊Map”,等于初始化到“精准Map”中。初始化查询辅助对象,具体包括:

查询MAP包括但不限于精准查询Map、模糊查询Map、不相等Map,时间条件、和默认参数条件。

初始化查询辅助对象,即构造查询辅助类,具体为:

1、构造查询辅助类:构造查询辅助类,里面至少包括精准查询Map、模糊查询Map、其它条件构造Map、不相等条件构造Map、排序条件及key、范围时间查询及key等属性。

2、构造条件方法:根据使用的ORM框架构造至少一个条件方法,构造SQL语句时,对辅助类的精准查询Map、模糊查询Map等进行条件编译及构造,对Map进行遍历,使用Map的key作为条件语句的字段(实体属性),使用Map类型作为条件类型(例如:精准查询Map使用“=”构造、模糊查询使用“like”构造),使用Map的value作为条件的值。

3、时间段查询构造:根据辅助类的属性,取得时间条件构造的key,在取得时间范围进行构造时间段查询语句。

4、排序构造方法:根据辅助类的排序类型取得排序的字段(前端可根据需要排序需求输入排序的字段、排序类型),根据排序字段、类型构造条件语句。

在应用系统中,对于检索、排序等功能应用非常频繁,通常都是需要前后端协同开发,完成相关的条件搜索语句的编码、排序等,且后续增加条件查询还需要修改后端代码,耗费的时间比较多,并且在已使用的应用中实时增加、更新也比较困难。

本发明的方法能够简化查询方法,减少第三方依赖,同时增加前后端容错,减少不必要的重复性编码工作。

在编码时首先需要构造查询辅助类,属性包含但不仅限于精准查询Map、模糊查询Map、其它条件构造Map、不相等条件构造Map、范围时间查询及key、条件追加、默认条件构造、数字比对构造器。

基于以上辅助类的属性,可编写条件构造器,具体构造方法如下:

(1)精准查询Map构造:获取精准查询Map,判断是否有精准查询参数,如果存在,则对该Map进行遍历,在遍历的过程中关注Map的Key和Value,并对遍历出来的key和value进行SQL语句条件构造,构造该语句时使用“=”进行构造(例如:and key=value),然后对构造的SQL语句进行拼装。

(2)模糊查询Map构造:获取模糊查询Map,判断是否有模糊查询参数,如果存在,则对该Map进行遍历,在遍历的过程中关注Map的Key和Value,并对遍历出来的key和value进行SQL语句条件构造,构造该语句时使用“like”进行构造(例如:and key like value),然后对构造的SQL语句进行拼装,like查询可衍生出左、右匹配的的不同封装条件Map。

(3)其他条件Map:其他条件Map可以作为扩展参数或者连表使用,对于扩展参数可提前预设好一些需要连表查询字段(连表查询数据比较固定),也可作为前端传参来进行扩展使用。

(4)不相等Map构造:获取不相等Map,判断是否存在不相等查询的参数,如果存在,则对Map进行遍历,将Map的key和value分别作为条件语句的字段和值,将Map类作为条件语句的“<>、!=”来进行构造。

(5)时间范围查询构造:时间范围构造,对时间范围查询可分为两部分进行,首先前端应传入查询时间的key(字段)值,其次传入时间段的开始、结束时间。构造条件时根据key值和开始日期、结束日期进行构造。

(6)默认条件构造:一般在建表的过程中都会遵循规范,建立每个表都统一的规范管理字段。例如该默认条件构造可对逻辑删除的字段进行处理,可建立统一的等于、不等于、包含、不包含的条件构造。

(7)数字比对构造器:将需要比对大小数字的key(字段值)传入,同时传入需要比对的值,或者区间值。根据lt、gt、eq、begin、end不同的构造方法生成不同的构造语句。

(8)排序构造器:排序可由前端根据实际操作传递排序的字段及规则,构造排序时根据排序字段顺序、类型进行构造。

(9)参数构造器:在传递参数时避免SQL注入的风险,可采用占位符、key值两种不同的方式进行传参。

在一个实施例中,本发明还提供一种基于javaMap快速查询条件封装装置,其包括,

输入模块,其用于前端发起查询,输入查询信息;

初始化模块,其用于初始化查询辅助对象,根据查询信息,将查询信息初始化到查询MAP中;

组装模块,其用于根据初始化的查询MAP,组装与查询MAP对应的SQL语句,获得组装查询语句,输出查询结果;

判断模块,其用于判断是否输入排序条件;

排序模块,其用于若判断是输入排序条件,则根据前端输入的排序需求对查询结果进行排序;

发送模块,其用于将最终查询语句并发送至数据库;

结果输出模块,其用于返回最终检索结果。

在另一个实施例中,本发明还提供一种计算机可读介质,所述可读介质存储有执行上述方法的计算机程序。

本发明的有益效果:

针对后端来讲,无需对使用到的查询条件进行编码判断、查询类型判断,后端无需过多关注SQL/HQL语句的条件构造过程。

针对前端来讲,不需要关注后端是否对某些条件字段进行过处理,进行过条件构造。前端只需要根据查询需求,编写对应的查询类型、对应的实体字段或表字段即可实现查询。

本发明可提升针对数据查询的编码效率,前端可将所有的字段条件进行设置,也可针对部分进行设置,也可针对不同的查询类型进行设置,提升前端编写查询功能的灵活性、实用性。

本发明可显著提升版本迭代升级效率,针对已经发布的服务,需要增加查询条件时,可直接在前端进行设置,更新前端静态资源文件即可实现查询,无需更改后台。

本发明基于javaMap快速查询条件封装的解决方案,有效的简化、减少编码及第三方依赖,并具有高度的灵活配置性,可即时修改即时生效,具有较高的实用性。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。此外,本领域人员可以将本说明书中描述的不同实施例或示例进行接合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改和变型。

相关技术
  • 一种Java程序保护方法、装置、设备及可读存储介质
  • 基于卷积神经网络的图像处理方法、装置及可读存储介质
  • 基于分层码标的无人机降落方法、装置、设备以及可读存储介质
  • 一种基于神经网络的辅助驾驶方法、装置及可读存储介质
  • 基于安全线的纸张鉴伪方法、装置、设备及可读存储介质
  • 基于Java语言的模型生成方法、装置、设备及可读存储介质
  • 基于java的可配置API参数的档案收集方法、计算装置及可读介质
技术分类

06120116072898