CN114817294A - 数据库访问方法和装置 - Google Patents
数据库访问方法和装置 Download PDFInfo
- Publication number
- CN114817294A CN114817294A CN202210359431.1A CN202210359431A CN114817294A CN 114817294 A CN114817294 A CN 114817294A CN 202210359431 A CN202210359431 A CN 202210359431A CN 114817294 A CN114817294 A CN 114817294A
- Authority
- CN
- China
- Prior art keywords
- sql
- database
- operation request
- identifier
- system cache
- 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
Classifications
-
- 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
-
- 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/245—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据库访问方法和装置,涉及数据库技术领域,包括:通过发送SQL操作请求的接口类型,判断是否属于预设的SQL操作请求,在属于预设的SQL操作请求时,在系统缓存中获取对应的SQL语句,根据SQL语句对数据库进行操作,得到SQL操作请求对应的操作结果。将应用对应的SQL语句写入系统缓存中,使用时只需要通过SQL操作请求中携带的SQL标识来获取系统缓存中对应的SQL语句,通过缓存机制不仅可以实现集中管理SQL语句,也可以提升SQL语句的使用效率。
Description
技术领域
本申请涉及数据库技术领域,特别是涉及一种数据库访问方法和装置。
背景技术
数据库访问技术一直以来都是应用软件领域最常用的技术。为避免开发人员直接使用Java数据库连接(java database connectivity,JDBC)代码访问数据库带来的巨大开发量,通常采用数据库持久层框架的方式,实现数据库的访问。
MyBatis是业界主流的数据库持久层框架,MyBatis主要依赖可扩展标记语言(extensible markup languag,XML)文件,而对应的结构化查询语言(structured querylanguage,SQL)语句分散在XML文件中,尤其在中大型项目中,存在较多的XML文件,导致SQL复用率低且管理不便。
发明内容
本申请提供一种数据库访问方法和装置,将应用对应的SQL语句写入系统缓存中,使用时只需要通过SQL操作请求中携带的SQL标识来获取系统缓存中对应的SQL语句,通过缓存机制不仅可以实现集中管理SQL语句,也可以提升SQL语句的使用效率。
第一方面,本申请提供一种数据库访问方法,包括:
接收应用程序通过调用接口发送的SQL操作请求,SQL操作请求中携带SQL标识;
根据接口的类型,判断SQL操作请求是否属于预设SQL操作请求,其中,预设SQL操作请求为关联有系统缓存的请求;
若是,则根据SQL标识,从系统缓存中获取SQL标识对应的SQL语句,其中,系统缓存对应的数据库与应用程序采用JDBC方式连接;
根据SQL语句,对数据库进行操作,得到SQL操作请求对应的操作结果。
可选的,从系统缓存中获取SQL标识对应的SQL语句之前,数据库访问方法还包括:根据SQL标识,判断系统缓存中是否存在SQL标识对应的SQL语句;
若否,则从数据库中获取SQL标识对应的SQL语句,并将SQL语句写入所述系统缓存中。
可选的,从数据库中获取SQL标识对应的SQL语句,并将SQL语句写入系统缓存中之前,数据库访问方法还包括:
判断应用程序是否与数据库采用JDBC方式连接;若否,则根据应用程序的属性文件获取数据库的配置文件,配置文件中包括:连接地址、数据库驱动名称、连接数、连接超时时间中的一种或多种;根据配置文件,建立数据库与应用程序的JDBC方式的连接。
可选的,根据配置文件,建立数据库与所述应用程序的JDBC方式的连接之后,还包括:
启动数据库的心跳监测任务,根据心跳监测任务的监测结果,确定数据库与所述应用程序保持JDBC方式的连接。
可选的,根据应用程序的属性文件获取数据库的配置文件之前,数据库访问方法还包括:
配置数据库并设定数据库的配置文件,其中,数据库包括一个默认数据源和多个其他数据源,每个其它数据源中设置有数据源标识;
对应地,根据SQL标识,从系统缓存中获取SQL标识对应的SQL语句,包括:判断SQL操作请求中是否携带数据源标识;若否,则从默认数据源对应的系统缓存中获取SQL标识对应的SQL语句;若是,则获取数据源标识对应的其它数据源,并从其它数据源对应的系统缓存中获取SQL标识对应的SQL语句。
可选的,根据SQL语句,对数据库进行操作,得到SQL操作请求对应的操作结果,包括:
对SQL语句进行解析,获取SQL语句中的参数标识;根据参数标识,将SQL语句中的参数替换为预编译语句的占位符;将SQL操作请求中所包括的实际参数传入占位符,得到执行SQL语句;根据执行SQL语句,对数据库进行操作,得到SQL操作请求对应的操作结果。
可选的,根据执行SQL语句,对数据库进行操作,得到SQL操作请求对应的操作结果,包括:
根据执行SQL语句,对数据库进行操作,得到执行结果;将执行结果映射为Java结果,以得到SQL操作请求对应的操作结果。
第二方面,本申请提供一种数据库访问装置,包括:
接收模块,用于接收应用程序通过调用接口发送的SQL操作请求,SQL操作请求中携带SQL标识;
判断模块,用于根据接口的类型,判断SQL操作请求是否属于预设SQL操作请求,其中,预设SQL操作请求为关联有系统缓存的请求;
获取模块,用于若SQL操作请求属于预设SQL操作请求,根据SQL标识,从系统缓存中获取SQL标识对应的SQL语句,其中,系统缓存对应的数据库与应用程序采用JDBC方式连接;
执行模块,用于根据SQL语句,对数据库进行操作,得到SQL操作请求对应的操作结果。
第三方面,本申请提供一种数据库访问电子设备,包括:存储器和处理器;
存储器用于存储计算机指令;处理器用于运行存储器存储的计算机指令实现第一方面中任一项的方法。
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现第一方面中任一项的方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面中任一项的方法。
附图说明
图1为本申请实施例提供的数据库访问系统的架构示意图;
图2为本申请实施例提供的数据库访问方法流程示意图;
图3为本申请实施例提供的数据库访问方法流程示意图;
图4为本申请实施例提供的数据库结构示意图;
图5为本申请实施例提供的据库访问装置结构示意图;
图6为本申请实施例提供的数据库访问电子设备的结构示意图。
具体实施方式
为了便于清楚描述本申请实施例的技术方案,以下,对本申请实施例中所涉及的部分术语和技术进行简单介绍:
1)JDBC是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
2)SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
3)应用程序接口(application programming interface,API)指软件系统不同组成部分衔接的约定,用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。
4)其他术语
在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
下面结合附图对本申请实施例提供的数据库访问方法进行详细地介绍。需要说明的是,本申请实施例中的“在……时”,可以为在某种情况发生的瞬时,也可以为在某种情况发生后的一段时间内,本申请实施例对此不作具体限定。
数据库访问技术一直以来都是应用软件领域最常用的技术。为避免开发人员直接使用JDBC代码访问数据库带来的巨大开发量,通常采用数据库持久层框架的方式,实现数据库的访问。
MyBatis是业界主流的数据库持久层框架,但是,MyBatis对数据库的操作主要依赖XML文件,而对应的SQL语句分散在XML文件中,在当应用中存在大量XML文件时,会使得查询较为困难,尤其在中大型项目中,会导致SQL语句复用率低且管理不便。
有鉴于此,本申请实施例提供一种数据库访问方法,通过将应用对应的SQL语句写入系统缓存中,使用时只需要通过SQL操作请求中携带的SQL标识来获取系统缓存中对应的SQL语句,通过缓存机制不仅可以实现集中管理SQL语句,也可以提升SQL语句的使用效率。
下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
图1为本申请实施例提供的数据库访问系统的架构示意图。
如图1所示,本申请实施例提供的数据库访问的系统架构包括接口层、核心处理层和基础支持层三个功能层,每个功能层可实现一个或多个功能的处理。其中,
接口层用于接收应用程序发送的操作请求,并调用核心处理层来完成具体的数据库操作。
示例性的,接口层可以包括DaoHelper接口,通过该接口接收应用程序发送的操作请求,即,核心处理层用于处理应用程序发送的操作请求,并返回操作请求对应的处理结果。
示例性的,核心处理层可以执行配置获取、参数识别、SQL解析、SQL执行以及结果映射等功能。
基础支持层用于为接口层和核心处理层提供基础能力的支持。
示例性的,基础支持层可以提供处理操作请求相应的数据源、事务管理、缓存、占位符、映射、类型转换、日志以及资源加载等功能。
可以理解的是,数据库访问系统中每一个功能的执行都可以使用相应的模块来实现。
上面对本申请实施例提供的数据库访问系统架构进行了简单说明,下面以应用于该系统架构为例,说明本申请实施例提供的数据库访问方法。
图2为本申请提供的数据库访问方法实施例一流程示意图,如图2所示,包含如下步骤:
S201、接收应用程序通过调用接口发送的SQL操作请求,SQL操作请求中携带SQL标识。
其中,接口可以用于应用程序连接支持应用程序正常运行的数据库或者数据库访问系统,本质上是预先定义的函数。SQL操作请求可以为应用对数据库的包括但不限于增加、减少以及查询等操作的请求。SQL标识用于识别对应的的SQL语句。
示例性的,DaoHelper接口可以接收到上层应用程序通过应用程序接口发送的SQL操作请求,并将该SQL操作请求发送至核心处理层进行分析处理。
S202、根据接口的类型,判断SQL操作请求是否属于预设SQL操作请求,其中,预设SQL操作请求为关联有系统缓存的请求。
不同的接口的类型可以用于实现不同的应用程序功能,本申请实施例中,SQL操作请求是通过标准查询语言接口发送的,其中,标准查询语言接口可以包括执行查询executeQuery、jselect等。预设SQL操作请求可以为集中管理SQL。
示例性的,核心处理层接收到接口层发送的SQL操作请求后,根据应用程序的接口类型判断该SQL操作请求是否为集中管理SQL,若是集中管理SQL,可以执行S203所示步骤,若不是,流程结束。例如,SQL操作请求是以jselect形式发送的,则属于集中管理SQL,以executeQuery形式发送的,则不属于集中管理SQL。
S203、根据SQL标识,从系统缓存中获取SQL标识对应的SQL语句,其中,系统缓存对应的数据库与应用程序采用JDBC方式连接。
缓存为进行高速数据交换的存储器,系统缓存是缓存中的一种,其中可以存储部分数据库中的内容。SQL语句为可以对数据库进行操作的语言。JDBC方式连接为根据Java操作数据库标准连接数据库与对应的应用程序。
示例性的,核心处理层根据SQL标识,在系统缓识别出对应的SQL语句,并从缓存中取出该SQL语句进行下一步分析。
S204、根据SQL语句,对数据库进行操作,得到SQL操作请求对应的操作结果。
对数据库进行操作可以包括在数据库中进行数据查询、在数据库中进行数据增加,在数据库中进行数据删除等。数据库可以识别SQL语句中的命令,并返回对应的结果。
示例性的,SQL语句具体为为在数据库中查询张三的年龄,数据库返回张三的年龄为45岁。
本实施例提供的数据库访问方法,通过发送SQL操作请求的接口类型,判断是否属于预设的SQL操作请求,在属于预设的SQL操作请求时,在系统缓存中获取对应的SQL语句,并对数据库进行操作,得到SQL操作请求对应的操作结果。将应用对应的SQL语句写入系统缓存中,使用时只需要通过SQL操作请求中携带的SQL标识来获取系统缓存中对应的SQL语句,通过缓存机制不仅可以实现集中管理SQL语句,也可以提升SQL语句的使用效率。
图3为本申请提供的数据库访问方法实施例二的流程示意图,如图3所示,本申请实施例提供的数据库访问方法包含如下步骤:
S301、接收应用程序通过调用接口发送的SQL操作请求,SQL操作请求中携带SQL标识。
S302、根据接口的类型,判断SQL操作请求是否属于预设SQL操作请求,其中,预设SQL操作请求为关联有系统缓存的请求。
本实施例S301和S302的实现方式与图2实施例提供的S201和S202类似,本实施例此处不再赘述。
S303、根据SQL操作请求,判断应用程序是否与数据库采用JDBC方式连接。
核心处理层根据SQL操作请求对应用程序与数据库的连接方式进行判断。若应用程序与数据库没有采用JDBC方式连接,可以执行S304所示步骤,若应用程序与数据库采用JDBC方式连接,可以执行S307所示步骤。
S304、根据应用程序的属性文件获取数据库的配置文件,配置文件中包括:连接地址、数据库驱动名称、连接数、连接用户名、密码、连接超时时间中的一种或多种。
属性文件为一个扩展名为属性properties的文本文件,用于记录一些应用程序需要的信息,应用程序可以随时对属性文件进行读取,以获得所需信息。
数据库的配置文件为对应用程序对应的数据库进行配置后生成的文件,也可以写入应用程序的属性文件中。其中,如图4所示,数据库包括一个默认数据源和多个其他数据源,每个其它数据源中设置有数据源标识。数据源标识用于对数据源进行区分。
对数据库进行配置指对数据库中各数据源的连接地址、数据库驱动名称等信息进行部署,即写入一个可以具体进行识别的信息。
示例性的,数据库的配置可以如下所示,
对于默认数据源:
spring.datasource.url=xxx
spring.datasource.username=xxx
spring.datasource.password=xxx
spring.datasource.driver classname=com.mysql.cj.jdbc.Driver
对于其他数据源:
spring.datasource.db1.url=xxx
spring.datasource.db1.username=xxx
spring.datasource.db1.password=xx
spring.datasource.db1.driver-class-name=com.mysql.cj.jdbc.Driver
......
spring.datasource.db2.url=xxx
spring.datasource.db2.username=xxx
spring.datasource.db2.password=xx
spring.datasource.db2.driver-class-name=com.mysql.cj.jdbc.Driver
......
其中,db1、db2为数据源标识,可以理解的是,数据源标识可以根据需要任意设定,本申请实施例采用db1、db2来作为数据源标识仅用于进行说明配置过程,并不对数据源标识采用的方式进行限定。
核心处理层在确认应用程序与数据库没有采用JDBC方式连接时,读取属性文件中与数据库有关的信息,用于进行数据库连接。在默认情况下,核心处理层会选取应用程序中类加载路径classpath路径下的应用程序.属性application.properties文件获取数据库的配置文件。
S305、根据配置文件,建立数据库与应用程序的JDBC方式的连接。
其中,数据库类型可以为oracle、mysql和mssql等。
核心处理层可以根据读取的数据库连接用户名与密码,使用与数据库类型相同型号的驱动管理器和JDBC连接地址,进行数据库连接。
S306、启动数据库的心跳监测任务,根据心跳监测任务的监测结果,确定数据库与应用程序保持JDBC方式的连接。
数据库的心跳监测任务可以用于判断应用程序是否与数据库一直保持连接。
具体的,核心处理层可以定时向数据库发送一个固定信息,例如,每隔3秒向数据库发送一个固定信息。如果预定时间内可以收到数据库返回的的固定信息,则表示应用程序与数据库一直保持连接,如果预定时间内,核心处理层未收到数据库返回的的固定信息,表示应用程序与数据库的连接已经断开。此时可以再次执行S304至S306所示步骤,对数据库进行连接。
其中,固定信息可以为不包含具体内容的空包,预定时间可以为3分钟,也可以根据实际需求设定固定信息的内容以及预定时间。
S307、根据SQL标识,判断系统缓存中是否存在SQL标识对应的SQL语句。
具体实现与步骤S203的实现方式类似,此处不在赘述。
若系统缓存中存在SQL标识对应的SQL语句是,可以执行S308所示步骤,若不存在,可以执行S309所示步骤。
S308、从系统缓存中获取SQL标识对应的SQL语句。
在具体实现过程中,核心处理层先判断SQL操作请求中是否携带数据源标识。
若SQL操作请求中没有携带数据源标识,则从默认数据源对应的系统缓存中获取SQL标识对应的SQL语句。
若SQL操作请求中携带数据源标识,则获取数据源标识对应的其它数据源,并从其它数据源对应的系统缓存中获取SQL标识对应的SQL语句。
从系统缓存中获取SQL标识对应的SQL语句后,可以执行S311所示步骤。
示例性的,SQL操作请求可以如下所示:
示例1:dao.jselect(“T1”,“SEL_T1_INFO”,param)
示例2:dao.jselect(“T1”,“SEL_T1_INFO”,param,“db1”)
其中,“T1”,“SEL_T1_INFO”为SQL标识。
示例1中,SQL操作请求中没有携带数据源标识“db1”,则从默认数据源对应的系统缓存中获取SQL标识对应的SQL语句。
示例2中,SQL操作请求中携带数据源标识“db1”,则从数据源标识“db1”对应的数据源的系统缓存中获取SQL标识对应的SQL语句。
S309、根据SQL标识,判断数据库中是否存在SQL标识对应的SQL语句。
S310、从数据库中获取SQL标识对应的SQL语句,并将SQL语句写入所述系统缓存中。
S311、对SQL语句进行解析,获取SQL语句中的参数标识。
对SQL语句进行解析指将SQL语句翻译成数据库可以识别的语句。
示例性的,获取SQL语句中的参数标识可以如下所示:
select username,is male from user info where age》20and level》5其中,20和5为参数标识。
S312、根据参数标识,将SQL语句中的参数替换为预编译语句的占位符。
占位符指用于占据位置的固定符号,在SQL语句中通常以“?”的形式存在。以占位符的形式替代参数标识,可以将同一类不同对象的SQL语句进行归类。
示例性的,将S311中所示的参数标识替换为预编译语句的占位符如下所示:
select username,is male from user info where age》?and level》?
S313、将SQL操作请求中所包括的实际参数传入占位符,得到执行SQL语句。
核心处理层可以对占位符进行编辑,将SQL操作请求中包括的实际参数写入占位符,得到SQL操作请求对应的数据库可以识别的执行SQL语句。
S314、根据执行SQL语句,对数据库进行操作,得到执行结果。
S315、将执行结果映射为Java结果,以得到SQL操作请求对应的操作结果。
映射指将数据库返回的执行结果翻译为数据实体Bean、单列数据集合List、双列数据集合Map等Java中的对象或者集合。
数据库与应用程序对数据的处理方式不同,通常数据库返回的执行结果是应用程序难以识别的,此时就需要将数据库返回的执行结果映射为应用程序可以识别的结果对象,方便应用程序使用。
示例性的,数据库返回的执行结果可以为二进制的字符串,核心处理层需要将该二进制的字符串映射出具体的SQL操作请求对应的操作结果。
本实施例提供的数据库访问方法,通过将应用对应的SQL语句写入系统缓存中,使用时只需要通过SQL操作请求中携带的SQL标识来获取系统缓存中对应的SQL语句,如果缓存中不存在对应的SQL语句,则在数据库中获取对应的SQL语句,并将该SQL语句写入缓存中。通过缓存机制不仅可以实现集中管理SQL语句,也可以提升SQL语句的使用效率。且在多数据源情况下,简化了应用侧的使用,在操作非默认数据源情况下,只需在SQL请求中多传入一个数据源标识参数即可。
本申请实施例还提供一种数据库访问装置50,如图5所示,包括:
接收模块501、判断模块502、获取模块503以及执行模块504。
接收模块501,用于接收应用程序通过调用接口发送的SQL操作请求,SQL操作请求中携带SQL标识。
判断模块502,用于根据接口的类型,判断SQL操作请求是否属于预设SQL操作请求,其中,预设SQL操作请求为关联有系统缓存的请求。
获取模块503,用于若SQL操作请求属于预设SQL操作请求,根据SQL标识,从系统缓存中获取SQL标识对应的SQL语句,其中,系统缓存对应的数据库与应用程序采用JDBC方式连接。
执行模块504,用于根据SQL语句,对数据库进行操作,得到SQL操作请求对应的操作结果。
本实施例提供的数据库访问装置可以执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步的,本申请实施例还提供一种数据库访问装置,在图5实施例提供的数据库访问装置50的基础上还包括,解析模块505。
进一步的,判断模块502还用于,从系统缓存中获取SQL标识对应的SQL语句之前,根据SQL标识,判断系统缓存中是否存在SQL标识对应的SQL语句;若否,则从数据库中获取SQL标识对应的SQL语句,并将SQL语句写入系统缓存中。
以及,判断所述应用程序是否与数据库采用JDBC方式连接。
具体的,判断模块502用于,判断SQL操作请求中是否携带数据源标识。若否,则从默认数据源对应的系统缓存中获取SQL标识对应的SQL语句。若是,则获取数据源标识对应的其它数据源,并从其它数据源对应的系统缓存中获取SQL标识对应的SQL语句。
获取模块503还用于,根据应用程序的属性文件获取数据库的配置文件,配置文件中包括:连接地址、数据库驱动名称、连接数、连接超时时间中的一种或多种,根据配置文件,建立数据库与所述应用程序的JDBC方式的连接。
执行模块504还用于,根据执行SQL语句,对数据库进行操作,得到执行结果;将执行结果映射为Java结果,以得到SQL操作请求对应的操作结果。
解析模块505用于,对所述SQL语句进行解析,获取SQL语句中的参数标识;根据参数标识,将SQL语句中的参数替换为预编译语句的占位符;将SQL操作请求中所包括的实际参数传入所述占位符,得到执行SQL语句;根据执行SQL语句,对数据库进行操作,得到SQL操作请求对应的操作结果。
本实施例提供的数据库访问装置可以执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图6为本申请实施例提供的数据库访问电子设备的结构示意图。如图6所示,本实施例提供的数据库访问电子设备60可以包括:
处理器601。
存储器602,用于存储数据库访问设备的可执行指令。
其中,处理器配置为经由执行可执行指令来执行上述数据库访问方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本申请实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述数据库访问方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
一种可能的实现方式中,计算机可读介质可以包括随机存取存储器(RandomAccess Memory,RAM),只读存储器(Read-Only Memory,ROM),只读光盘(compact discread-only memory,CD-ROM)或其它光盘存储器,磁盘存储器或其它磁存储设备,或目标于承载的任何其它介质或以指令或数据结构的形式存储所需的程序代码,并且可由计算机访问。而且,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,数字用户线(Digital Subscriber Line,DSL)或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘,激光盘,光盘,数字通用光盘(Digital Versatile Disc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
本申请实施例中还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述数据库访问方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述终端设备或者服务器的具体实现中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:ApplicationSpecific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本领域技术人员可以理解,上述任一方法实施例的全部或部分步骤可以通过与程序指令相关的硬件来完成。前述的程序可以存储于计算机可读取存储介质中,该程序被执行时,执行上述方法实施例的全部或部分的步骤。
本申请技术方案如果以软件的形式实现并作为产品销售或使用时,可以存储在计算机可读取存储介质中。基于这样的理解,本申请的技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括计算机程序或者若干指令。该计算机软件产品使得计算机设备(可以是个人计算机、服务器、网络设备或者类似的电子设备)执行本申请实施例所述方法的全部或部分步骤。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种数据库访问方法,其特征在于,包括:
接收应用程序通过调用接口发送的SQL操作请求,所述SQL操作请求中携带SQL标识;
根据所述接口的类型,判断所述SQL操作请求是否属于预设SQL操作请求,其中,所述预设SQL操作请求为关联有系统缓存的请求;
若是,则根据所述SQL标识,从系统缓存中获取所述SQL标识对应的SQL语句,其中,所述系统缓存对应的数据库与所述应用程序采用JDBC方式连接;
根据所述SQL语句,对所述数据库进行操作,得到所述SQL操作请求对应的操作结果。
2.根据权利要求1所述的方法,其特征在于,所述从系统缓存中获取所述SQL标识对应的SQL语句之前,所述方法还包括:
根据所述SQL标识,判断系统缓存中是否存在所述SQL标识对应的SQL语句;
若否,则从所述数据库中获取所述SQL标识对应的SQL语句,并将所述SQL语句写入所述系统缓存中。
3.根据权利要求2所述的方法,其特征在于,所述从所述数据库中获取所述SQL标识对应的SQL语句,并将所述SQL语句写入所述系统缓存中之前,所述方法还包括:
判断所述应用程序是否与所述数据库采用JDBC方式连接;
若否,则根据所述应用程序的属性文件获取所述数据库的配置文件,所述配置文件中包括:连接地址、数据库驱动名称、连接数、连接超时时间中的一种或多种;
根据所述配置文件,建立所述数据库与所述应用程序的JDBC方式的连接。
4.根据权利要求3所述的方法,其特征在于,所述根据所述配置文件,建立所述数据库与所述应用程序的JDBC方式的连接之后,还包括:
启动所述数据库的心跳监测任务,
根据所述心跳监测任务的监测结果,确定所述数据库与所述应用程序保持JDBC方式的连接。
5.根据权利要求3所述的方法,其特征在于,所述根据所述应用程序的属性文件获取所述数据库的配置文件之前,所述方法还包括:
配置所述数据库并设定所述数据库的配置文件,其中,所述数据库包括一个默认数据源和多个其他数据源,每个所述其它数据源中设置有数据源标识;
对应地,所述根据所述SQL标识,从系统缓存中获取所述SQL标识对应的SQL语句,包括:
判断所述SQL操作请求中是否携带数据源标识;
若否,则从所述默认数据源对应的系统缓存中获取所述SQL标识对应的SQL语句;
若是,则获取所述数据源标识对应的其它数据源,并从所述其它数据源对应的系统缓存中获取所述SQL标识对应的SQL语句。
6.根据权利要求1所述的方法,其特征在于,所述根据所述SQL语句,对所述数据库进行操作,得到所述SQL操作请求对应的操作结果,包括:
对所述SQL语句进行解析,获取所述SQL语句中的参数标识;
根据所述参数标识,将所述SQL语句中的参数替换为预编译语句的占位符;
将所述SQL操作请求中所包括的实际参数传入所述占位符,得到执行SQL语句;
根据所述执行SQL语句,对所述数据库进行操作,得到所述SQL操作请求对应的操作结果。
7.根据权利要求6所述的方法,其特征在于,所述根据所述执行SQL语句,对所述数据库进行操作,得到所述SQL操作请求对应的操作结果,包括:
根据所述执行SQL语句,对所述数据库进行操作,得到执行结果;
将所述执行结果映射为Java结果,以得到所述SQL操作请求对应的操作结果。
8.一种数据库访问装置,其特征在于,包括:
接收模块,用于接收应用程序通过调用接口发送的SQL操作请求,所述SQL操作请求中携带SQL标识;
判断模块,用于根据所述接口的类型,判断所述SQL操作请求是否属于预设SQL操作请求,其中,所述预设SQL操作请求为关联有系统缓存的请求;
获取模块,用于若所述SQL操作请求属于预设SQL操作请求,根据所述SQL标识,从系统缓存中获取所述SQL标识对应的SQL语句,其中,所述系统缓存对应的数据库与所述应用程序采用JDBC方式连接;
执行模块,用于根据所述SQL语句,对所述数据库进行操作,得到所述SQL操作请求对应的操作结果。
9.一种数据库访问电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现权利要求1-8中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210359431.1A CN114817294A (zh) | 2022-04-07 | 2022-04-07 | 数据库访问方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210359431.1A CN114817294A (zh) | 2022-04-07 | 2022-04-07 | 数据库访问方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114817294A true CN114817294A (zh) | 2022-07-29 |
Family
ID=82534116
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210359431.1A Pending CN114817294A (zh) | 2022-04-07 | 2022-04-07 | 数据库访问方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114817294A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7365469B1 (ja) | 2022-08-05 | 2023-10-19 | 株式会社Cygames | Rdbに関する処理を行うためのシステム、キャッシュサーバ、方法、及びプログラム |
-
2022
- 2022-04-07 CN CN202210359431.1A patent/CN114817294A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7365469B1 (ja) | 2022-08-05 | 2023-10-19 | 株式会社Cygames | Rdbに関する処理を行うためのシステム、キャッシュサーバ、方法、及びプログラム |
WO2024029534A1 (ja) * | 2022-08-05 | 2024-02-08 | 株式会社Cygames | Rdbに関する処理を行うためのシステム、キャッシュサーバ、方法、及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020233367A1 (zh) | 区块链数据存储和查询方法、装置、设备及存储介质 | |
CN107402988B (zh) | 一种分布式NewSQL数据库系统和半结构化数据查询方法 | |
CN110431545A (zh) | 针对结构化数据和非结构化数据执行查询 | |
US20130132372A1 (en) | Systems and methods for dynamic service integration | |
US20040111728A1 (en) | Method and system for managing metadata | |
US9753977B2 (en) | Method and system for managing database | |
US8713368B2 (en) | Methods for testing OData services | |
US20120143898A1 (en) | Meta-Application Framework | |
WO2015149628A1 (zh) | Dns缓存信息处理方法、设备及系统 | |
US20160034582A1 (en) | Computing device and method for executing database operation command | |
CN108038213A (zh) | 一种数据处理的方法、客户端、服务器及系统 | |
US11966384B2 (en) | Generating external identifiers for data entities using a data catalog system | |
CN114356921A (zh) | 数据处理方法、装置、服务器及存储介质 | |
CN111259067A (zh) | 一种基于Spring实现DAO接口的方法、装置及设备 | |
CN115168338A (zh) | 数据处理方法、电子设备及存储介质 | |
CN112905636A (zh) | 数据操作方法、服务器和计算机可读介质 | |
AU2017237089A1 (en) | Technologies for auto discover and connect to a rest interface | |
CN114817294A (zh) | 数据库访问方法和装置 | |
US20160253361A1 (en) | Incorporating external data into a database schema | |
CN117171108B (zh) | 一种虚拟模型映射方法和系统 | |
CN117271584A (zh) | 数据处理方法及装置、计算机可读存储介质和电子设备 | |
US11205049B2 (en) | Method for managing semantic information on M2M/IoT platform | |
CN112905617B (zh) | 数据写入方法、服务器及计算机可读存储介质 | |
CN111680069B (zh) | 数据库访问方法及装置 | |
US11436059B2 (en) | Method and system for proximity based workload and data placement |
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 |