CN111782195A - 一种基于在请求参数上添加注解拼接成sql的查询方法 - Google Patents

一种基于在请求参数上添加注解拼接成sql的查询方法 Download PDF

Info

Publication number
CN111782195A
CN111782195A CN202010607592.9A CN202010607592A CN111782195A CN 111782195 A CN111782195 A CN 111782195A CN 202010607592 A CN202010607592 A CN 202010607592A CN 111782195 A CN111782195 A CN 111782195A
Authority
CN
China
Prior art keywords
condition
query
annotation
whrer
sql
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.)
Granted
Application number
CN202010607592.9A
Other languages
English (en)
Other versions
CN111782195B (zh
Inventor
李楠
叶亮钦
黃凌壮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Yunxi Technology Co ltd
Original Assignee
Guangzhou Yunxi Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Yunxi Technology Co ltd filed Critical Guangzhou Yunxi Technology Co ltd
Priority to CN202010607592.9A priority Critical patent/CN111782195B/zh
Publication of CN111782195A publication Critical patent/CN111782195A/zh
Application granted granted Critical
Publication of CN111782195B publication Critical patent/CN111782195B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query 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的查询方法
技术领域
本发明涉及软件开发信息技术领域,具体涉及一种基于在请求参数上添加注解拼接成SQL的查询方法。
背景技术
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
目前开发过程中SQL拼写一般在mybatis(一款持久层框架)的映射文件中通过where标签下进行人工拼接。如下代码所示,使用if/foreach等标签对条件参数做逻辑判断和执行,SQL语句使用字符串拼接。
Figure BDA0002561383880000011
Figure BDA0002561383880000021
如上展示的代码冗长,由于根据前端参数转化为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”中的任意一种。如:
Figure BDA0002561383880000051
Figure BDA0002561383880000061
S2,在请求参数添加定义后的注解,并设定对应查询条件的数据库字段及条件操作;其中注解、查询条件的数据库字段及条件操作拼接成数据库查询语句;在步骤S2中请求参数是对应网站交互页面中的查询条件输入值的接收对象,每个查询条件的输入值会赋值到请求参数的对应属性值上,所述每个查询条件的输入值为对应查询条件的具体的数据库字段及条件操作。其中查询条件是业务规定的什么字段用什么方式查询。接收对象是用户在查询时输入的参数。步骤S2的使用示例如下所示,type支持多个值使用in查询,code支持=查询。数据库字段及条件操作为如下代码的@QueryFilter的值。请求参数为如下代码中的private String code。
Figure BDA0002561383880000062
S3,将带有注解及查询输入值的请求参数输入注解解析引擎,注解解析引擎从每个请求参数的注解中获取WHRER条件;具体地,步骤S3包括:注解解析引擎从请求参数的注解中获取WHRER条件数据库字段及WHRER条件操作,从请求参数中获取对应属性值,WHRER条件数据库字段、WHRER条件操作和对应属性值组成WHRER条件;每个属性形成的WHRER条件使用AND进行连接。
S4,使用所述WHRER条件进行SQL查询。
综上,现有技术的实施方案是更加底层的方式,需要对业务开发人员的技术要求高,本发明通过定义一个简化WHERE条件的编写规范的注解,在请求参数上使用定义的注解,达到配置WHERE条件的效果,实现对底层进行了封装,简化了实现逻辑,对开发人员的技术要求更低,加快了效率,节约了成本。
上述具体实施方式为本发明的优选实施例,并不能对本发明进行限定,其他的任何未背离本发明的技术方案而所做的改变或其它等效的置换方式,都包含在本发明的保护范围之内。

Claims (5)

1.一种基于在请求参数上添加注解拼接成SQL的查询方法,其特征在于,包括:
S1,基于简化WHERE条件的编写原则对注解进行定义;
S2,在请求参数添加定义后的注解,并设定对应查询条件的数据库字段及条件操作;其中注解、查询条件的数据库字段及条件操作拼接成数据库查询语句;
S3,将带有注解及查询输入值的请求参数输入注解解析引擎,注解解析引擎会从每个请求参数的注解中获取WHRER条件;
S4,使用所述WHRER条件进行SQL查询。
2.根据权利要求1所述的基于在请求参数上添加注解拼接成SQL的查询方法,其特征在于,在步骤S1中,定义后的注解包括:WHERE条件数据库字段、WHERE条件操作和是否可以为空值,其中WHERE条件数据库字段为WHRER条件的左边部分,为条件查询的对应的数据库字段;WHERE条件操作为WHRER条件的中间部分,是否可以为空值为WHRER条件的右边部分。
3.根据权利要求2所述的基于在请求参数上添加注解拼接成SQL的查询方法,其特征在于,所述WHERE条件操作为“=”、“>”、“<”和“in”中的任意一种。
4.根据权利要求1所述的基于在请求参数上添加注解拼接成SQL的查询方法,其特征在于,在步骤S2中请求参数是对应网站交互页面中的查询条件输入值的接收对象,每个查询条件的输入值会赋值到请求参数的对应属性值上,所述每个查询条件的输入值为对应查询条件的具体的数据库字段及条件操作。
5.根据权利要求2所述的基于在请求参数上添加注解拼接成SQL的查询方法,其特征在于,步骤S3包括:注解解析引擎从请求参数的注解中获取WHRER条件数据库字段及WHRER条件操作,从请求参数中获取对应属性值,WHRER条件数据库字段、WHRER条件操作和对应属性值组成WHRER条件;每个属性形成的WHRER条件使用AND进行连接。
CN202010607592.9A 2020-06-30 2020-06-30 一种基于在请求参数上添加注解拼接成sql的查询方法 Active CN111782195B (zh)

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 true CN111782195A (zh) 2020-10-16
CN111782195B 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114756554A (zh) * 2022-06-13 2022-07-15 中建电子商务有限责任公司 一种基于MyBatis框架的数据查询处理方法
CN115858594A (zh) * 2023-02-22 2023-03-28 北方健康医疗大数据科技有限公司 一种数据查询方法、装置、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050177589A1 (en) * 2004-02-10 2005-08-11 Ramachandran Venkatesh System and method for providing user defined types in a database system
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 大汉软件股份有限公司 一种支持国产数据库的安全性多兼容轻量级数据库适配开发与操作装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050177589A1 (en) * 2004-02-10 2005-08-11 Ramachandran Venkatesh System and method for providing user defined types in a database system
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 大汉软件股份有限公司 一种支持国产数据库的安全性多兼容轻量级数据库适配开发与操作装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114756554A (zh) * 2022-06-13 2022-07-15 中建电子商务有限责任公司 一种基于MyBatis框架的数据查询处理方法
CN114756554B (zh) * 2022-06-13 2022-09-30 中建电子商务有限责任公司 一种基于MyBatis框架的数据查询处理方法
CN115858594A (zh) * 2023-02-22 2023-03-28 北方健康医疗大数据科技有限公司 一种数据查询方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN111782195B (zh) 2024-05-03

Similar Documents

Publication Publication Date Title
US11907247B2 (en) Metadata hub for metadata models of database objects
US8479149B2 (en) Concept-oriented software engineering system and method for identifying, extracting, organizing, inferring and querying software system facts
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
US10942926B2 (en) Identification, and query, of semantically-related database tables
WO2023221408A1 (zh) 深度学习框架的算子处理方法、装置、设备和存储介质
US20120011134A1 (en) Systems and methods for database query translation
JP2012504826A (ja) 拡張可能な構文を有するプログラミング言語
US11341142B2 (en) Framework and metadata artefacts for updating data artefacts
CN111782195A (zh) 一种基于在请求参数上添加注解拼接成sql的查询方法
EP4155965A1 (en) System and method for facilitating metadata identification and import
CN114281342A (zh) 一种代码自动生成方法
CN113467785B (zh) 一种拟态数据库的sql转译方法和系统
CN115905212A (zh) 具有相关性标识符的集中式元数据储存库
CN112650526B (zh) 版本一致性的检测方法、装置、电子设备和介质
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
CN113687827B (zh) 基于微件的数据列表生成方法、装置、设备及存储介质
CN115576563A (zh) 一种sql脚本动态优化方法
US7058651B2 (en) Method, computer program product, and system for automatic class generation with simultaneous customization and interchange capability
CN114385145A (zh) 一种Web系统后端架构设计方法及计算机设备
Jia-di et al. Modeling Language Design and Mapping Rules for REST Interface
US11940951B2 (en) Identification and import of metadata for extensions to database artefacts
US20230334268A1 (en) Logical pointers supporting reuse of text translations
US20230315751A1 (en) Propagation of extensions of data artifacts
US20230121287A1 (en) Metadata elements with persistent identifiers

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