System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,特别涉及一种查询语句生成方法、动态查询方法及系统、设备、介质。
技术介绍
1、java是一种广泛使用的编程语言,提供了丰富的api和框架,以支持各种应用开发需求,包括web应用、桌面应用、移动应用等。
2、jpa(java persistenceapi,java持久层api)是jdk 5.0及以上版本提供的一个用于对象关系映射(orm)的javaapi。jpa的主要目标是为pojo(plain old java object,简单的java对象)提供持久化标准规范,使得开发者能够方便地将java对象映射到关系型数据库中,并进行对象的增删改查操作。
3、jpql(java persistence query language,java持久化查询语言)是java持久化查询语言的缩写,是jpa中定义的一种查询语句规范。
4、随着jpa的使用越来越广泛,传统的jpql查询暴露出诸多缺点。例如,对于不同的查询需求,都要编写不同的jpql字符串,导致代码冗余。并且,java编译器不能在编译时发现jpql字符串的语法错误,只能在运行时执行jpql语句后才抛出运行时的异常,需要开发人员返工,导致开发效率低下。
技术实现思路
1、为了解决上述技术问题,本申请提供一种查询语句生成方法、动态查询方法及系统、设备、介质。
2、本申请是通过下述技术方案来解决上述技术问题:
3、第一方面,本申请提供一种查询语句生成方法,包括:
>4、响应用户在目标查询界面输入筛选条件,根据所述筛选条件和对应的查询对象获取目标注解;
5、其中,所述目标注解包括目标属性和/或目标方法对应的字段名称、所述字段名称对应的查询操作和分组信息;
6、基于所述字段名称对应的所述筛选条件和对应的所述查询操作,生成相应的查询条件子句;
7、根据所述分组信息对所述查询条件子句进行分组和拼接,生成目标查询条件;
8、根据所述目标查询界面对应的预设查询内容和所述目标查询条件,生成目标查询语句。
9、可选地,所述分组信息包括分组名称和组内连接关系;
10、所述生成目标查询条件的步骤包括:
11、根据所述查询条件子句对应的所述分组名称对所述查询条件子句进行分组;
12、根据所述组内连接关系将同一组中的所述查询条件子句进行连接,得到查询条件组合;
13、根据预设连接关系将不同的所述查询条件组合进行连接,得到所述目标查询条件。
14、可选地,所述根据所述查询条件子句对应的所述分组名称对所述查询条件子句进行分组的步骤包括:
15、将对应相同所述分组名称的第一查询条件子句分为同一组;
16、将不存在相同所述分组名称的第二查询条件子句分为默认组;
17、其中,所述默认组的所述组内连接关系为“and”。
18、可选地,所述根据所述筛选条件和对应的查询对象获取目标注解的步骤包括:
19、遍历所述查询对象的属性和方法,确定所述筛选条件覆盖的所述属性为目标属性,确定所述筛选条件覆盖的所述方法为目标方法;
20、分别根据所述目标属性和所述目标方法的注解确定所述目标注解。
21、可选地,所述分别根据所述目标属性和所述目标方法的注解确定所述目标注解的步骤包括:
22、分别判断所述目标属性和所述目标方法是否存在注解;
23、若存在,根据所述筛选条件和预设校验规则对所述注解进行校验,将通过校验的所述注解确定为所述目标注解。
24、第二方面,本申请提供一种动态查询方法,包括:
25、根据如第一方面所述的查询语句生成方法,生成目标查询语句;
26、获取所述目标查询语句对应的查询结果并输出。
27、第三方面,本申请提供一种查询语句生成系统,包括:
28、输入响应模块,用于响应用户在目标查询界面输入筛选条件,根据所述筛选条件和对应的查询对象获取目标注解;
29、其中,所述目标注解包括目标属性和/或目标方法对应的字段名称、所述字段名称对应的查询操作和分组信息;
30、定义获取模块,用于基于所述字段名称对应的所述筛选条件和对应的所述查询操作,生成相应的查询条件子句;
31、判断条件生成模块,用于根据所述分组信息对所述查询条件子句进行分组和拼接,生成目标查询条件;
32、第一语句生成模块,用于根据所述目标查询界面对应的预设查询内容和所述目标查询条件,生成目标查询语句。
33、第四方面,本申请提供一种动态查询系统,包括:
34、第二语句生成模块,用于根据如第三方面的动态查询语句的生成系统生成目标查询语句;
35、查询反馈模块,用于获取所述目标查询语句对应的查询结果并输出。
36、第五方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并用于在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如第一方面所述的查询语句生成方法,和/或实现如第二方面所述的动态查询方法。
37、第六方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如第一方面所述的查询语句生成方法,和/或实现如第二方面所述的动态查询方法。
38、在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本申请各较佳实例。
39、本申请的积极进步效果在于:本申请基于类的特性,通过注解的方式为查询对象定义了其在数据库中对应的字段名称、字段名称对应的查询操作以及组成目标查询条件时需要使用到的分组信息,提高了代码复用率和安全性,降低了代码入侵性。其中,通过注解的方式定义的分组信息还可以支持多分组查询。另外,还可以通过子类继承父类,使得在父类中为属性和方法定义的注解在继承该父类的所有子类中都生效,还可以通过在子类中复写父类中的方法,以不加注解或改变注解的内容的方式屏蔽父类中的注解,实现更精细化的查询和管理。
本文档来自技高网...【技术保护点】
1.一种查询语句生成方法,其特征在于,所述查询语句生成方法包括:
2.根据权利要求1所述的查询语句生成方法,其特征在于,所述分组信息包括分组名称和组内连接关系;
3.根据权利要求2所述的查询语句生成方法,其特征在于,所述根据所述查询条件子句对应的所述分组名称对所述查询条件子句进行分组的步骤包括:
4.根据权利要求1所述的查询语句生成方法,其特征在于,所述根据所述筛选条件和对应的查询对象获取目标注解的步骤包括:
5.根据权利要求4所述的查询语句生成方法,其特征在于,所述分别根据所述目标属性和所述目标方法的注解确定所述目标注解的步骤包括:
6.一种动态查询方法,其特征在于,所述动态查询方法包括:
7.一种动态查询语句的生成系统,其特征在于,所述生成系统包括:
8.一种动态查询系统,其特征在于,所述动态查询系统包括:
9.一种电子设备,包括存储器、处理器及存储在存储器上并用于在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现如权利要求1至5中任一项所述的查询语句生成
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1至5中任一项所述的查询语句生成方法,和/或实现如权利要求6所述的动态查询方法。
...【技术特征摘要】
1.一种查询语句生成方法,其特征在于,所述查询语句生成方法包括:
2.根据权利要求1所述的查询语句生成方法,其特征在于,所述分组信息包括分组名称和组内连接关系;
3.根据权利要求2所述的查询语句生成方法,其特征在于,所述根据所述查询条件子句对应的所述分组名称对所述查询条件子句进行分组的步骤包括:
4.根据权利要求1所述的查询语句生成方法,其特征在于,所述根据所述筛选条件和对应的查询对象获取目标注解的步骤包括:
5.根据权利要求4所述的查询语句生成方法,其特征在于,所述分别根据所述目标属性和所述目标方法的注解确定所述目标注解的步骤包括:
6.一种动态查询方法...
【专利技术属性】
技术研发人员:涂恒强,甄磊,何浩,张其,
申请(专利权)人:重庆赛力斯新能源汽车设计院有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。