CN103020064A - 一种通过注解方式生成查询条件的方法和配置 - Google Patents
一种通过注解方式生成查询条件的方法和配置 Download PDFInfo
- Publication number
- CN103020064A CN103020064A CN2011102827547A CN201110282754A CN103020064A CN 103020064 A CN103020064 A CN 103020064A CN 2011102827547 A CN2011102827547 A CN 2011102827547A CN 201110282754 A CN201110282754 A CN 201110282754A CN 103020064 A CN103020064 A CN 103020064A
- Authority
- CN
- China
- Prior art keywords
- database
- query
- field
- class
- resolver
- 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
Links
Images
Abstract
本发明公开了一种是用注解的方式配置数据库ORM的java bean,使之能在Servlet中与页面传递过来的HttpRequest Map匹配,从而根据注解的类型来生成出SQL的查询条件语句。提供注解的种类可以有数据库类型、匹配的表明、匹配的表字段名、对应的RequestMap中参数的名字以及查询的操作等。最终通过一个解析器,采用java反射的操作模式,对配置的注解和RequestMap判断和匹配后,返回一串String型的SQL条件语句。
Description
技术领域
本发明涉及电子信息技术领域,特别是涉及一种通过注解方式生成查询条件的方法。
背景技术
在IT软件的业务开发中,通过开发语言与数据库的交互是很频繁的,通常开发人员会通过业务逻辑去生成一串数据库的SQL语句,再通过数据库提供的类库执行。往往在一个客户端的查询界面时,会输入各种查询条件,开发人员不得不在后台的代码中写很长的一串判断查询参数的语句,再生成最终的SQL提交给数据库,这样使得开发效率低下,也很容易产生错误的SQL语句。
为了提高开发人员对数据库查询模块的开发效率,故采用了一种基于java注解的方式配置到数据库实体对象类里,通过一种解析器,自动的对注解解析,最终生成想要的查询SQL,提交给数据库。
当然,这种方式也有一定的缺陷,就是当次没通过解析器进行生成查询语句时,解析器对一个复杂的实体类的解析是需要花费一段时间的,对于这种情况,查询可能请求的时间较长一些。
发明内容
本发明所要解决的技术问题是提供一种通过注解方式生成查询条件的方法,使程序开发人员不需要过多的写SQL语句,而是针对实体的对象的注解配置来操作。
为实现上述发明目的,本发明提供一些数据库表实体对象的注解类型,提供的可配置的数据库类型、数据库字段类型、Requst中条件参数匹配名称、查询操作和自定义实现的字段查询解析器;
所述可配置的Request中条件匹配参数名称,用于:配置在数据库实体对象类的字段上,可以配置多个名称。参数名称注解中的值是一个字符串的数组,用于存放多个参数名称,对应到一个实体属性;
所述查询操作,用于:配置在数据库实体对象类中对此字段的查询操作,例如等于或大于等,值得注意的时,此注解中操作的个数应该与条件名称注解的个数相同,因为每个参数与每个操作一一对。同样,操作注解的值里也是一个数组,不过改数组存放的是一个包含常用查询操作类型的枚举对象;
所述自定义实现的字段查询解析器,就是当使用者不想在当前字段使用默认的操作注解时,可以自己实现。只需继承公共字段解析器的抽象方法即可。并将所实现的类路径配置到该注解中。
一种通过注解方式生成查询条件的类解析器,包括:
解析器解析配置在数据库表映射的实体对象中属于类范围的注解,通常可以是数据库类型,数据库表明通过这些注解的类型,解析器会最终采用数据库方言的形式转换生产的条件SQL语句。同时,类解析器会采用迭代的方式,将一个表实体类的属性迭代出来,通过参数的方式传给字段解析器解析。
一种通过注解方式生成查询条件的字段解析器,包括:
解析每个实体对象的属性中的注解,从而找到RequestMap中对应的查询参数值,根据配置的注解信息,生成每个字段的条件查询操;
当字段没有配置参数名称注解时,解析器自动跳过该类的属性;
当字段没有配置查询操作类型注解时,解析器自动为其使用默认的查询操作,缺省情况下是等于操作。
当字段配置了多个参数名称注解时,也要配置相同数量的操作类型注解,解析器会自动对该字段生成出相同数量的条件查询语句。
由上述方案可以看出,本发明中只需对一个数据库表的实体类进行修改,在相应的位置上配置好相应的注解类型,再使用类解析器同时对实体类和查询请求的参数进行解析,最终生成出相应的查询语句。且便于开发人员轻松的使用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一中系统结构示意图;
图2为本发明实施例一中系统处理信息流程示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一,参见图1、图2
本发明提供一种通过注解的方式生成数据库查询语句的方法。
类解析器通过客户端发来的查询请求参数,和定义的数据库表实体类的注解,通过解析后再次调用字段解析器,从而生成最终的查询SQL。
由上可见,本发明提供的一种通过注解的方式生成数据库查询语句的方法,有以下优点。
(1)便于配置
本发明只需配置好实体类的注解,通过调用解析器的方式即可完成。
(2)应用数据库类型广
本发明使用的是数据方言的类型,如果配置了数据库类型注解,则生成的SQL是支持改数据库的。
(3)更加的面向对象化
开发人员在采用本方法对数据库进行查询调用时,更加的面向对象化,只需要关注数据库映射的实体对象即可。
通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本发明采用了一种基于java注解的方式配置到数据库实体对象类里,通过一种解析器,自动的对注解解析,最终生成想要的查询SQL,提交给数据库。
当然,这种方式也有一定的缺陷,就是当次没通过解析器进行生成查询语句时,解析器对一个复杂的实体类的解析是需要花费一段时间的,对于这种情况,查询可能请求的时间较长一些。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (3)
1.用与配置数据库映射对象类的注解,其特征在于,包括提供的可配置的数据库类型、数据库字段类型、Request中条件参数匹配名称、查询操作和自定义实现的字段查询解析器;
所述可配置的Request中条件匹配参数名称,用于:配置在数据库实体对象类的字段上,可以配置多个名称;
所述查询操作,用于:配置在数据库实体对象类中对此字段的查询操作,例如等于或大于等,值得注意的时,此注解中操作的个数应该与条件名称注解的个数相同,因为每个参数与每个操作一一对应;
所述自定义实现的字段查询解析器,就是当使用者不想在当前字段使用默认的操作注解时,可以自己实现。只需继承公共字段解析器的抽象方法即可;并将所实现的类路径配置到该注解中。
2.一种通过注解方式生成查询条件的类解析器,其特征在于,包括:解析器解析配置在数据库表映射的实体对象中属于类范围的注解,通常可以是数据库类型,数据库表明通过这些注解的类型,解析器会最终采用数据库方言的形式转换生产的条件SQL语句;同时,类解析器会采用迭代的方式,将一个表实体类的属性迭代出来,通过参数的方式传给字段解析器解析。
3.一种通过注解方式生成查询条件的字段解析器,其特征在于,包括:解析每个实体对象的属性中的注解,从而找到RequestMap中对应的查询参数值,根据配置的注解信息,生成每个字段的条件查询操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102827547A CN103020064A (zh) | 2011-09-20 | 2011-09-20 | 一种通过注解方式生成查询条件的方法和配置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102827547A CN103020064A (zh) | 2011-09-20 | 2011-09-20 | 一种通过注解方式生成查询条件的方法和配置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103020064A true CN103020064A (zh) | 2013-04-03 |
Family
ID=47968680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011102827547A Pending CN103020064A (zh) | 2011-09-20 | 2011-09-20 | 一种通过注解方式生成查询条件的方法和配置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103020064A (zh) |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103745010A (zh) * | 2014-01-28 | 2014-04-23 | 北京京东尚科信息技术有限公司 | 一种基于csv文件确定对象属性值的方法和装置 |
CN104679903A (zh) * | 2015-03-20 | 2015-06-03 | 亚信科技(南京)有限公司 | 一种数据表的操作方法及装置 |
CN106502541A (zh) * | 2016-11-03 | 2017-03-15 | 贵阳朗玛信息技术股份有限公司 | 一种Android界面的操作方法及装置 |
CN106528261A (zh) * | 2016-12-02 | 2017-03-22 | 武汉斗鱼网络科技有限公司 | 应用页面初始化的编译控制装置及方法 |
CN106547863A (zh) * | 2016-10-31 | 2017-03-29 | 努比亚技术有限公司 | 操作HBase的方法及装置 |
CN106648587A (zh) * | 2016-09-28 | 2017-05-10 | 福州宇嘉软件科技有限公司 | 一种基于注解的Web应用代码生成方法 |
CN106933564A (zh) * | 2015-12-31 | 2017-07-07 | 远光软件股份有限公司 | 通过Fitler模型及注解扩展实现ECP平台数据访问的查询方法 |
CN107193957A (zh) * | 2017-05-23 | 2017-09-22 | 努比亚技术有限公司 | 结构化查询语言的生成方法、终端及计算机可读存储介质 |
CN108595164A (zh) * | 2018-04-08 | 2018-09-28 | 浙江网盛数新软件股份有限公司 | 一种数据格式与Java对象的转换方法 |
CN108710504A (zh) * | 2017-04-10 | 2018-10-26 | 北大方正集团有限公司 | 数据库操作方法及装置 |
CN108710662A (zh) * | 2018-05-14 | 2018-10-26 | 上海跬智信息技术有限公司 | 语言转换方法和装置、存储介质、数据查询系统和方法 |
CN109271403A (zh) * | 2018-09-28 | 2019-01-25 | 北京京东金融科技控股有限公司 | 一种数据查询的操作方法、装置、介质及电子设备 |
CN109766102A (zh) * | 2018-12-30 | 2019-05-17 | 卓集送信息科技(武汉)有限公司 | 一种自动解析请求参数的匹配方法 |
CN110381056A (zh) * | 2019-07-17 | 2019-10-25 | 钛马信息网络技术有限公司 | 基于Netty的私有协议编解码方法及装置 |
CN110457013A (zh) * | 2019-07-12 | 2019-11-15 | 阿里巴巴集团控股有限公司 | 程序组件配置装置及方法 |
CN110674200A (zh) * | 2019-09-17 | 2020-01-10 | 南京紫津融畅信息科技服务有限公司 | 一种基于注解的数据查询方法、数据查询设备及存储介质 |
CN111078213A (zh) * | 2018-10-18 | 2020-04-28 | 马上消费金融股份有限公司 | 一种代码生成方法及代码生成装置 |
CN111125220A (zh) * | 2019-12-18 | 2020-05-08 | 任子行网络技术股份有限公司 | 信息自定义导出方法及装置 |
CN111324803A (zh) * | 2020-02-11 | 2020-06-23 | 支付宝(杭州)信息技术有限公司 | 搜索引擎的查询请求处理方法、装置及客户端 |
CN112507067A (zh) * | 2020-11-30 | 2021-03-16 | 厦门海西医药交易中心有限公司 | 一种缓存插入式注解器及注解方法 |
CN113111239A (zh) * | 2021-04-08 | 2021-07-13 | 北京联创新天科技有限公司 | 一种通用数据库操作方法、装置及其存储介质 |
CN113779030A (zh) * | 2021-09-13 | 2021-12-10 | 北京房江湖科技有限公司 | 枚举值查询方法、可读存储介质及计算机程序产品 |
CN114238527A (zh) * | 2022-02-24 | 2022-03-25 | 安翰科技(武汉)股份有限公司 | 基于对象关系映射的数据处理方法和数据处理装置 |
CN115033312A (zh) * | 2022-08-09 | 2022-09-09 | 中化现代农业有限公司 | ElasticSearch数据操作方法及装置 |
CN115858594A (zh) * | 2023-02-22 | 2023-03-28 | 北方健康医疗大数据科技有限公司 | 一种数据查询方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050262041A1 (en) * | 2004-05-21 | 2005-11-24 | Bea Systems, Inc. | Systems and methods for plain old java object (POJO) persistence |
US20070234318A1 (en) * | 2006-04-04 | 2007-10-04 | International Business Machines Corporation | Method, system, and program product for generating source code for a function |
CN101980213A (zh) * | 2010-11-23 | 2011-02-23 | 中国科学院软件研究所 | 一种基于j2ee的数据持久化方法及系统 |
-
2011
- 2011-09-20 CN CN2011102827547A patent/CN103020064A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050262041A1 (en) * | 2004-05-21 | 2005-11-24 | Bea Systems, Inc. | Systems and methods for plain old java object (POJO) persistence |
US20070234318A1 (en) * | 2006-04-04 | 2007-10-04 | International Business Machines Corporation | Method, system, and program product for generating source code for a function |
CN101980213A (zh) * | 2010-11-23 | 2011-02-23 | 中国科学院软件研究所 | 一种基于j2ee的数据持久化方法及系统 |
Non-Patent Citations (1)
Title |
---|
HIBERNATE.ORG: "《Hibernate Annotations,Ver 3.2.0 CR1》", 20 August 2008 * |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103745010A (zh) * | 2014-01-28 | 2014-04-23 | 北京京东尚科信息技术有限公司 | 一种基于csv文件确定对象属性值的方法和装置 |
CN104679903A (zh) * | 2015-03-20 | 2015-06-03 | 亚信科技(南京)有限公司 | 一种数据表的操作方法及装置 |
CN104679903B (zh) * | 2015-03-20 | 2018-02-13 | 亚信科技(南京)有限公司 | 一种数据表的操作方法及装置 |
CN106933564A (zh) * | 2015-12-31 | 2017-07-07 | 远光软件股份有限公司 | 通过Fitler模型及注解扩展实现ECP平台数据访问的查询方法 |
CN106648587A (zh) * | 2016-09-28 | 2017-05-10 | 福州宇嘉软件科技有限公司 | 一种基于注解的Web应用代码生成方法 |
CN106547863A (zh) * | 2016-10-31 | 2017-03-29 | 努比亚技术有限公司 | 操作HBase的方法及装置 |
CN106502541B (zh) * | 2016-11-03 | 2019-08-27 | 贵阳朗玛信息技术股份有限公司 | 一种Android界面的操作方法及装置 |
CN106502541A (zh) * | 2016-11-03 | 2017-03-15 | 贵阳朗玛信息技术股份有限公司 | 一种Android界面的操作方法及装置 |
CN106528261A (zh) * | 2016-12-02 | 2017-03-22 | 武汉斗鱼网络科技有限公司 | 应用页面初始化的编译控制装置及方法 |
CN108710504A (zh) * | 2017-04-10 | 2018-10-26 | 北大方正集团有限公司 | 数据库操作方法及装置 |
CN107193957A (zh) * | 2017-05-23 | 2017-09-22 | 努比亚技术有限公司 | 结构化查询语言的生成方法、终端及计算机可读存储介质 |
CN108595164A (zh) * | 2018-04-08 | 2018-09-28 | 浙江网盛数新软件股份有限公司 | 一种数据格式与Java对象的转换方法 |
CN108710662A (zh) * | 2018-05-14 | 2018-10-26 | 上海跬智信息技术有限公司 | 语言转换方法和装置、存储介质、数据查询系统和方法 |
CN108710662B (zh) * | 2018-05-14 | 2019-12-27 | 上海跬智信息技术有限公司 | 语言转换方法和装置、存储介质、数据查询系统和方法 |
CN109271403A (zh) * | 2018-09-28 | 2019-01-25 | 北京京东金融科技控股有限公司 | 一种数据查询的操作方法、装置、介质及电子设备 |
CN111078213A (zh) * | 2018-10-18 | 2020-04-28 | 马上消费金融股份有限公司 | 一种代码生成方法及代码生成装置 |
CN111078213B (zh) * | 2018-10-18 | 2024-01-19 | 马上消费金融股份有限公司 | 一种代码生成方法及代码生成装置 |
CN109766102A (zh) * | 2018-12-30 | 2019-05-17 | 卓集送信息科技(武汉)有限公司 | 一种自动解析请求参数的匹配方法 |
CN110457013A (zh) * | 2019-07-12 | 2019-11-15 | 阿里巴巴集团控股有限公司 | 程序组件配置装置及方法 |
CN110457013B (zh) * | 2019-07-12 | 2023-11-17 | 创新先进技术有限公司 | 程序组件配置装置及方法 |
CN110381056B (zh) * | 2019-07-17 | 2021-08-03 | 钛马信息网络技术有限公司 | 基于Netty的私有协议编解码方法及装置 |
CN110381056A (zh) * | 2019-07-17 | 2019-10-25 | 钛马信息网络技术有限公司 | 基于Netty的私有协议编解码方法及装置 |
CN110674200A (zh) * | 2019-09-17 | 2020-01-10 | 南京紫津融畅信息科技服务有限公司 | 一种基于注解的数据查询方法、数据查询设备及存储介质 |
CN111125220A (zh) * | 2019-12-18 | 2020-05-08 | 任子行网络技术股份有限公司 | 信息自定义导出方法及装置 |
CN111125220B (zh) * | 2019-12-18 | 2023-04-11 | 任子行网络技术股份有限公司 | 信息自定义导出方法及装置 |
CN111324803B (zh) * | 2020-02-11 | 2024-01-02 | 支付宝(杭州)信息技术有限公司 | 搜索引擎的查询请求处理方法、装置及客户端 |
CN111324803A (zh) * | 2020-02-11 | 2020-06-23 | 支付宝(杭州)信息技术有限公司 | 搜索引擎的查询请求处理方法、装置及客户端 |
CN112507067A (zh) * | 2020-11-30 | 2021-03-16 | 厦门海西医药交易中心有限公司 | 一种缓存插入式注解器及注解方法 |
CN112507067B (zh) * | 2020-11-30 | 2022-08-23 | 厦门海西医药交易中心有限公司 | 一种缓存插入式注解器及注解方法 |
CN113111239A (zh) * | 2021-04-08 | 2021-07-13 | 北京联创新天科技有限公司 | 一种通用数据库操作方法、装置及其存储介质 |
CN113111239B (zh) * | 2021-04-08 | 2024-03-29 | 北京联创新天科技有限公司 | 一种通用数据库操作方法、装置及其存储介质 |
CN113779030A (zh) * | 2021-09-13 | 2021-12-10 | 北京房江湖科技有限公司 | 枚举值查询方法、可读存储介质及计算机程序产品 |
CN113779030B (zh) * | 2021-09-13 | 2023-08-08 | 北京房江湖科技有限公司 | 枚举值查询方法、可读存储介质及计算机程序产品 |
CN114238527A (zh) * | 2022-02-24 | 2022-03-25 | 安翰科技(武汉)股份有限公司 | 基于对象关系映射的数据处理方法和数据处理装置 |
CN115033312A (zh) * | 2022-08-09 | 2022-09-09 | 中化现代农业有限公司 | ElasticSearch数据操作方法及装置 |
CN115858594A (zh) * | 2023-02-22 | 2023-03-28 | 北方健康医疗大数据科技有限公司 | 一种数据查询方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103020064A (zh) | 一种通过注解方式生成查询条件的方法和配置 | |
US10216826B2 (en) | Database query system | |
CN103093000A (zh) | 数据库查询建模系统和数据库查询建模方法 | |
US10558434B2 (en) | Rule-based automatic class generation from a JSON message | |
WO2016123920A1 (zh) | 支持多类型数据库操作的集成接口的实现方法及系统 | |
CN106934062A (zh) | 一种查询elasticsearch的实现方法及系统 | |
US9031920B2 (en) | Objects in a storage environment for connected applications | |
CN103593456B (zh) | 表单自定义设计方法及装置 | |
US9047105B2 (en) | Configuration modeling with objects | |
CN104461531B (zh) | 一种报表系统自定义函数的实现方法 | |
CN103617047A (zh) | 一种业务流程开发方法、装置及处理器 | |
CN101876984A (zh) | 一种数据管理系统及其数据关联查询方法和装置 | |
US20080183741A1 (en) | Method and system for querying a database | |
CN105389184B (zh) | 产品界面信息的配置方法及装置 | |
CN103914290A (zh) | 一种操作命令处理方法及装置 | |
CN107609302B (zh) | 一种产品工艺结构生成方法及系统 | |
CN102426612A (zh) | 条件对象查询方法及系统 | |
CN105975489A (zh) | 一种基于元数据的在线sql代码补全方法 | |
CN104536987A (zh) | 一种查询数据的方法及装置 | |
CN108388623A (zh) | Er关系生成方法、装置、计算机设备及存储介质 | |
CN112084208A (zh) | 数据可视化方法及系统、存储介质及电子设备 | |
CN108228762B (zh) | 用于配置主数据库通用模板的方法和系统 | |
US9665601B1 (en) | Using a member attribute to perform a database operation on a computing device | |
CN103678396A (zh) | 一种基于数据模型的数据备份方法和装置 | |
CN111782195B (zh) | 一种基于在请求参数上添加注解拼接成sql的查询方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130403 |