CN111782195B - 一种基于在请求参数上添加注解拼接成sql的查询方法 - Google Patents
一种基于在请求参数上添加注解拼接成sql的查询方法 Download PDFInfo
- Publication number
- CN111782195B CN111782195B CN202010607592.9A CN202010607592A CN111782195B CN 111782195 B CN111782195 B CN 111782195B CN 202010607592 A CN202010607592 A CN 202010607592A CN 111782195 B CN111782195 B CN 111782195B
- Authority
- CN
- China
- Prior art keywords
- condition
- query
- whrer
- conditions
- request parameters
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 12
- 230000015572 biosynthetic process Effects 0.000 claims description 3
- 230000003993 interaction Effects 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 13
- 230000000694 effects Effects 0.000 abstract description 4
- 238000013500 data storage Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于在请求参数上添加注解拼接成SQL的查询方法,S1,基于简化WHERE条件的编写原则对注解进行定义;S2,在请求参数添加定义后的注解,并设定对应查询条件的数据库字段及条件操作;S3,将带有注解及查询输入值的请求参数输入注解解析引擎,注解解析引擎会从每个请求参数的注解中获取WHRER条件;S4,使用所述WHRER条件进行SQL查询。本发明通过定义一个简化WHERE条件的编写规范注解;在请求参数上使用定义的注解,达到配置WHERE条件的效果,实现对底层的封装;使得业务开发更加方便,开发效率更高,产生漏洞的风险更小。
Description
技术领域
本发明涉及软件开发信息技术领域,具体涉及一种基于在请求参数上添加注解拼接成SQL的查询方法。
背景技术
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
目前开发过程中SQL拼写一般在mybatis(一款持久层框架)的映射文件中通过where标签下进行人工拼接。如下代码所示,使用if/foreach等标签对条件参数做逻辑判断和执行,SQL语句使用字符串拼接。
如上展示的代码冗长,由于根据前端参数转化为SQL条件不能全自动化生成,不好编写,较难做语法检查,造成手工拼写开发量大、开发效率低和容易拼写错误而产生漏洞等缺点。比如少写条件连接关键字and导致SQL语法错误,加之有if判断,导致非针对性测试测试不出这个漏洞。
发明内容
本发明的目的是为了克服以上现有技术存在的不足,提供了一种业务开发更加方便,开发效率更高的基于在请求参数上添加注解拼接成SQL的查询方法。
本发明的目的通过以下的技术方案实现:
一种基于在请求参数上添加注解拼接成SQL的查询方法,包括:
S1,基于简化WHERE条件的编写原则对注解进行定义;
S2,在请求参数添加定义后的注解,并设定对应查询条件的数据库字段及条件操作;其中注解、查询条件的数据库字段及条件操作拼接成数据库查询语句;
S3,将带有注解及查询输入值的请求参数输入注解解析引擎,注解解析引擎会从每个请求参数的注解中获取WHRER条件;
S4,使用所述WHRER条件进行SQL查询。
优选地,在步骤S1中,定义后的注解包括:WHERE条件数据库字段、WHERE条件操作和是否可以为空值,其中WHERE条件数据库字段为WHRER条件的左边部分,为条件查询的对应的数据库字段;WHERE条件操作为WHRER条件的中间部分,是否可以为空值为WHRER条件的右边部分。
优选地,所述WHERE条件操作为“=”、“>”、“<”和“in”中的任意一种。
优选地,在步骤S2中请求参数是对应网站交互页面中的查询条件输入值的接收对象,每个查询条件的输入值会赋值到请求参数的对应属性值上,所述每个查询条件的输入值为对应查询条件的具体的数据库字段及条件操作。
优选地,步骤S3包括:注解解析引擎从请求参数的注解中获取WHRER条件数据库字段及WHRER条件操作,从请求参数中获取对应属性值,WHRER条件数据库字段、WHRER条件操作和对应属性值组成WHRER条件;每个属性形成的WHRER条件使用AND进行连接。
本发明相对于现有技术具有如下优点:
本发明通过定义一个简化WHERE条件的编写规范注解;在请求参数上使用定义的注解,达到配置WHERE条件的效果,实现对底层的封装;把请求参数通过注解解析引擎后会生成SQL WHERE条件结果。使用该结果进行SQL查询。需要业务开发介入的只有第一步(基于简化WHERE条件的编写原则对注解进行定义),使得业务开发更加方便,开发效率更高,产生漏洞的风险更小。
附图说明
构成本申请的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明的基于在请求参数上添加注解拼接成SQL的查询方法的流程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
本技术方案需要定义一个简化WHERE条件的编写规范的注解;在请求参数上使用定义的注解,达到配置WHERE条件的效果;把请求参数通过注解解析引擎后会生成SQLWHERE条件结果。使用该结果进行SQL查询。需要业务开发介入的只有第一步(定义一个简化WHERE条件的编写规范的注解),达到简化业务开发的目的。本技术方案核心是在请求参数上使用注解的方式。使得业务开发人员只关注业务所需的查询条件,不需要关注具体的SQL拼接语句。具体流程如下:
参见图1,一种基于在请求参数上添加注解拼接成SQL的查询方法,包括:
S1,基于简化WHERE条件的编写原则对注解进行定义;其中简化WHERE条件的编写规范是指WHERE条件的编写原则是简单化,规范化的,编写出的WHERE条件为简化的WHERE条件,这样能够简化业务开发。定义后的注解包括:WHERE条件数据库字段、WHERE条件操作和是否可以为空值,其中WHERE条件数据库字段为WHRER条件的左边部分,为条件查询的对应的数据库字段;WHERE条件操作为WHRER条件的中间部分,是否可以为空值为WHRER条件的右边部分,意思是null是否参与条件查询。所述WHERE条件操作为“=”、“>”、“<”和“in”中的任意一种。如:
S2,在请求参数添加定义后的注解,并设定对应查询条件的数据库字段及条件操作;其中注解、查询条件的数据库字段及条件操作拼接成数据库查询语句;在步骤S2中请求参数是对应网站交互页面中的查询条件输入值的接收对象,每个查询条件的输入值会赋值到请求参数的对应属性值上,所述每个查询条件的输入值为对应查询条件的具体的数据库字段及条件操作。其中查询条件是业务规定的什么字段用什么方式查询。接收对象是用户在查询时输入的参数。步骤S2的使用示例如下所示,type支持多个值使用in查询,code支持=查询。数据库字段及条件操作为如下代码的@QueryFilter的值。请求参数为如下代码中的private String code。
S3,将带有注解及查询输入值的请求参数输入注解解析引擎,注解解析引擎从每个请求参数的注解中获取WHRER条件;具体地,步骤S3包括:注解解析引擎从请求参数的注解中获取WHRER条件数据库字段及WHRER条件操作,从请求参数中获取对应属性值,WHRER条件数据库字段、WHRER条件操作和对应属性值组成WHRER条件;每个属性形成的WHRER条件使用AND进行连接。
S4,使用所述WHRER条件进行SQL查询。
综上,现有技术的实施方案是更加底层的方式,需要对业务开发人员的技术要求高,本发明通过定义一个简化WHERE条件的编写规范的注解,在请求参数上使用定义的注解,达到配置WHERE条件的效果,实现对底层进行了封装,简化了实现逻辑,对开发人员的技术要求更低,加快了效率,节约了成本。
上述具体实施方式为本发明的优选实施例,并不能对本发明进行限定,其他的任何未背离本发明的技术方案而所做的改变或其它等效的置换方式,都包含在本发明的保护范围之内。
Claims (1)
1.一种基于在请求参数上添加注解拼接成SQL的查询方法,其特征在于,包括:
S1,基于简化WHERE条件的编写原则对注解进行定义;定义后的注解包括:WHERE条件数据库字段、WHERE条件操作和是否可以为空值,其中WHERE条件数据库字段为WHRER条件的左边部分,为条件查询的对应的数据库字段;WHERE条件操作为WHRER条件的中间部分,是否可以为空值为WHRER条件的右边部分;
S2,在请求参数添加定义后的注解,并设定对应查询条件的数据库字段及条件操作;其中注解、查询条件的数据库字段及条件操作拼接成数据库查询语句;所述WHERE条件操作为“=”、“>”、“<”和“in”中的任意一种;请求参数是对应网站交互页面中的查询条件输入值的接收对象,每个查询条件的输入值会赋值到请求参数的对应属性值上,所述每个查询条件的输入值为对应查询条件的具体的数据库字段及条件操作;
S3,将带有注解及查询输入值的请求参数输入注解解析引擎,注解解析引擎会从每个请求参数的注解中获取WHRER条件;注解解析引擎从请求参数的注解中获取WHRER条件数据库字段及WHRER条件操作,从请求参数中获取对应属性值,WHRER条件数据库字段、WHRER条件操作和对应属性值组成WHRER条件;每个属性形成的WHRER条件使用AND进行连接;
S4,使用所述WHRER条件进行SQL查询。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010607592.9A CN111782195B (zh) | 2020-06-30 | 2020-06-30 | 一种基于在请求参数上添加注解拼接成sql的查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010607592.9A CN111782195B (zh) | 2020-06-30 | 2020-06-30 | 一种基于在请求参数上添加注解拼接成sql的查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111782195A CN111782195A (zh) | 2020-10-16 |
CN111782195B true CN111782195B (zh) | 2024-05-03 |
Family
ID=72761599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010607592.9A Active CN111782195B (zh) | 2020-06-30 | 2020-06-30 | 一种基于在请求参数上添加注解拼接成sql的查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782195B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114756554B (zh) * | 2022-06-13 | 2022-09-30 | 中建电子商务有限责任公司 | 一种基于MyBatis框架的数据查询处理方法 |
CN115858594A (zh) * | 2023-02-22 | 2023-03-28 | 北方健康医疗大数据科技有限公司 | 一种数据查询方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7774361B1 (en) * | 2005-07-08 | 2010-08-10 | Symantec Corporation | Effective aggregation and presentation of database intrusion incidents |
WO2014094331A1 (zh) * | 2012-12-19 | 2014-06-26 | 广东电子工业研究院有限公司 | 可实现多属性复合条件查询的虚拟表索引机制及方法 |
CN110019335A (zh) * | 2017-10-17 | 2019-07-16 | 航天信息股份有限公司 | 一种基于注解对sql查询语句进行动态扩展的方法及系统 |
CN110674200A (zh) * | 2019-09-17 | 2020-01-10 | 南京紫津融畅信息科技服务有限公司 | 一种基于注解的数据查询方法、数据查询设备及存储介质 |
CN110858202A (zh) * | 2018-08-21 | 2020-03-03 | 北京京东尚科信息技术有限公司 | 数据库查询语句中where子句的生成方法和生成装置 |
CN111241065A (zh) * | 2020-01-13 | 2020-06-05 | 大汉软件股份有限公司 | 一种支持国产数据库的安全性多兼容轻量级数据库适配开发与操作装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6976029B2 (en) * | 2004-02-10 | 2005-12-13 | Microsoft Corporation | System and method for providing user defined types in a database system |
-
2020
- 2020-06-30 CN CN202010607592.9A patent/CN111782195B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7774361B1 (en) * | 2005-07-08 | 2010-08-10 | Symantec Corporation | Effective aggregation and presentation of database intrusion incidents |
WO2014094331A1 (zh) * | 2012-12-19 | 2014-06-26 | 广东电子工业研究院有限公司 | 可实现多属性复合条件查询的虚拟表索引机制及方法 |
CN110019335A (zh) * | 2017-10-17 | 2019-07-16 | 航天信息股份有限公司 | 一种基于注解对sql查询语句进行动态扩展的方法及系统 |
CN110858202A (zh) * | 2018-08-21 | 2020-03-03 | 北京京东尚科信息技术有限公司 | 数据库查询语句中where子句的生成方法和生成装置 |
CN110674200A (zh) * | 2019-09-17 | 2020-01-10 | 南京紫津融畅信息科技服务有限公司 | 一种基于注解的数据查询方法、数据查询设备及存储介质 |
CN111241065A (zh) * | 2020-01-13 | 2020-06-05 | 大汉软件股份有限公司 | 一种支持国产数据库的安全性多兼容轻量级数据库适配开发与操作装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111782195A (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11907247B2 (en) | Metadata hub for metadata models of database objects | |
CN106934062B (zh) | 一种查询elasticsearch的实现方法及系统 | |
US7836100B2 (en) | Calculating and storing data structures including using calculated columns associated with a database system | |
US8752005B2 (en) | Concept-oriented software engineering system and method for identifying, extracting, organizing, inferring and querying software system facts | |
US7454413B2 (en) | Query expressions and interactions with metadata | |
US7853553B2 (en) | Engine for converting data from a source format to a destination format using user defined mappings | |
US11526656B2 (en) | Logical, recursive definition of data transformations | |
KR101224813B1 (ko) | 관계 모델링 | |
US7487174B2 (en) | Method for storing text annotations with associated type information in a structured data store | |
US20070255751A1 (en) | Method to transform meta object facility specifications into relational data definition language structures and JAVA classes | |
US20120011134A1 (en) | Systems and methods for database query translation | |
CN103744891A (zh) | 一种数据查询方法和系统 | |
US20070061294A1 (en) | Source code file search | |
KR20090009834A (ko) | 프로그래밍 언어에서 수식 트리의 깊은 임베딩을 위한 범용인터페이스를 제공하는 시스템, 컴퓨터 구현 방법 및 컴퓨터 구현 시스템 | |
CN111782195B (zh) | 一种基于在请求参数上添加注解拼接成sql的查询方法 | |
CN113467785B (zh) | 一种拟态数据库的sql转译方法和系统 | |
US20040019600A1 (en) | Method, computer program product, and system for automatically generating a hierarchical database schema report to facilitate writing application code for accessing hierarchical databases | |
Padhi et al. | The SyGuS Language Standard Version 2.1 | |
US11620282B2 (en) | Automated information retrieval system and semantic parsing | |
CN113687827B (zh) | 基于微件的数据列表生成方法、装置、设备及存储介质 | |
JP2024504556A (ja) | データ処理システムによって管理されるデータエンティティにアクセスするためのシステム及び方法 | |
Kosanović et al. | Applang–A DSL for specification of mobile applications for android platform based on textX | |
Nagel | Enterprise Data Modeling Using XML Schema | |
Güting et al. | Secondo Programmer’s guide | |
US20230334268A1 (en) | Logical pointers supporting reuse of text translations |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |