掌桥专利:专业的专利平台
掌桥专利
首页

执行多条sql语句的方法、装置、智能终端及存储介质

文献发布时间:2023-06-19 11:52:33


执行多条sql语句的方法、装置、智能终端及存储介质

技术领域

本发明涉及数据处理技术领域,尤其涉及的是一种执行多条sql语句 的方法、装置、智能终端及存储介质。

背景技术

Mybatis(MyBatis是一款优秀的持久层框架,它支持定制化sql语句、 存储过程以及高级映射)作为一种常用的数据库持久层技术被普遍使用,、 常存在以下场景,即某个应用程序的功能操作涉及数据库中多个表的数据 处理并且这些处理是由多条sql语句完成的。比如删除主表数据前须先删 除被关联子表(一个或者多个)的外键引用数据,唯一性字段数据插入前 需检查是否已存在数据表中,或者某项操作的功能设计为需同时删除修改多个数据表数据等。

但是这些场景存在共同的特性为:1、需要多条sql语句协同完成;2、 类似工作流模式每条sql语句依次执行且当前执行结果影响下一条sql执 行;3、要求每条sq语句l都执行成功才视为当前业务功能操作成功,只 要其中一条sql语句执行失败则视为当前业务功能操作失败且需要进行数 据库回滚已执行成功的sql语句;4、多条sql语句需要的参数可以定义为 一个共同数据对象。由此可以看出,在现有技术中,多条sql语句在执行 时易容易出执行失败,从而影响业务功能的实现,并且在执行时需要繁琐 臃肿的代码,不利于维护。

因此,现有技术还有待改进和发展。

发明内容

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种 执行多条sql语句的方法、装置、智能终端及存储介质,旨在解决现有技 术中,多条sql语句在执行时易容易出执行失败,且在执行时需要繁琐臃 肿的代码的问题。

本发明解决问题所采用的技术方案如下:

第一方面,本发明实施例提供一种执行多条sql语句的方法,其中,所 述方法包括:

当启动预设应用程序中的预设功能时,获取预设的数据库操作单元, 并判断所述数据库操作单元中是否包括多条sql语句;

当所述数据库操作单元中包括多条sql语句时,则获取每一条sql语句 对应的操作对象;

依次执行每一条sql语句所对应的所述操作对象。

在一种实施方式中,所述当启动预设应用程序中的预设功能时,获取 预设的数据库操作单元,并判断所述数据库操作单元中是否包括多条sql语 句,包括:

当启动预设应用程序中的预设功能时,则从预设的数据模型中获取所 述数据库操作单元;

对所述数据库操作单元进行解析,获取所述数据库操作单元中的分隔 符号,所述分隔符号用于隔开相邻两条sql语句;

若存在所述分隔符号,则确定所述数据库操作单元中包括多条sql语 句。

在一种实施方式中,所述数据库操作单元的构建方式包括:

预先将多条sql语句按照预设的顺序进行排列;

将每一条所述sql语句分别与一操作对象建立对应关系,并生成存储有 所述对应关系的数据库操作单元;

将所述数据库操作单元保存在所述数据模型中。

在一种实施方式中,所述当所述数据库操作单元中包括多条sql语句 时,则获取每一条sql语句对应的操作对象,包括:

当确定所述所述数据库操作单元中包括多条sql语句时,则获取每一条 sql语句;

根据每一条sql语句的序号标识,查找与每一个序号标志对应的操作对 象。

在一种实施方式中,所述依次执行每一条sql语句所对应的所述操作对 象,包括:

从所述数据库操作单元中获取所述数据库操作单元中排列在第一位的 sql语句以及与所述第一位的sql语句对应的操作对象;

执行所述第一位的sql语句对应的操作对象;

当所述第一位的sql语句对应的操作对象执行成功后,按照所述数据库 操作单元中多条sql语句的排列顺序执行下一sql语句的操作对象。

在一种实施方式中,所述依次执行每一条sql语句所对应的所述操作对 象,包括:

当任意一条sql语句对应的操作对象执行失败时,则停止执行后续的 sql语句所对应的操作对象,并判定所述数据库操作单元整体执行失败。

在一种实施方式中,所述方法还包括:

若所述数据库操作单元中仅包括一条sql语句时,则获取所述sql语句 对应的操作对象,并执行所述操作对象。

第二方面,本发明实施例还提供一种执行多条sql语句的装置,其中, 所述装置包括:

语句判定单元,用于当启动预设应用程序中的预设功能时,获取预设 的数据库操作单元,并判断所述数据库操作单元中是否包括多条sql语句;

对象获取单元,用于当所述数据库操作单元中包括多条sql语句时,则 获取每一条sql语句对应的操作对象;

对象执行单元,用于依次执行每一条sql语句所对应的所述操作对象。

第三方面,本发明实施还提供一种智能终端,包括有存储器,以及一 个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且 经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含 用于执行如上述任意一项所述的执行多条sql语句的方法。

第四方面,本发明实施例还提供一种非临时性计算机可读存储介质, 当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够 执行如上述中任意一项所述的执行多条sql语句的方法。

本发明的有益效果:本发明在启动预设应用程序中的预设功能时,通 过获取预设的数据库操作单元,并判断所述数据库操作单元中是否包括多 条sql语句,当所述数据库操作单元中包括多条sql语句时,则获取每一条 sql语句对应的操作对象并依次执行每一条sql语句所对应的所述操作对 象,从而保证多条sql语句执行成功,优化程序代码设计,避免产生繁琐臃 肿的代码。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对 实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地, 下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技 术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其 他的附图。

图1是本发明实施例提供的执行多条sql语句的方法的流程示意图。

图2是本发明实施例提供的执行多条sql语句的方法中语句判定的流程 示意图。

图3是本发明实施例提供的执行多条sql语句的方法中对象获取的流程 示意图。

图4是本发明实施例提供的执行多条sql语句的方法中确定对象执行的 流程示意图。

图5是本发明实施例提供的执行多条sql语句的装置的原理框图。

图6是本发明实施例提供的智能终端的内部结构原理框图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图 并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施 例仅仅用以解释本发明,并不用于限定本发明。

需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、 前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下 各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时, 则该方向性指示也相应地随之改变。

经研究发现,现有技术中多条sql语句在执行时,基本都会产生以下 特性:1、需要多条sql语句协同完成;2、类似工作流模式每条sql语句 依次执行且当前执行结果影响下一条sql语句执行;3、要求每条sql语句 都执行成功才视为当前业务功能操作成功,只要其中一条sql语句执行失 败则视为当前业务功能操作失败且需要进行数据库回滚已执行成功的sql; 4、多条sql语句需要的参数可以定义为一个共同数据对象。由此可以看出, 在现有技术中,多条sql语句在执行时易容易出执行失败,从而影响业务 功能的实现,并且在执行时需要繁琐臃肿的代码,不利于维护。

虽然,现有解决上述问题的常见方法是利用数据库jdbc(java databaseconnectivity)驱动程序的allowMultiQueries属性(用来支持多条sql 语句)设置为true实现。但此方法存在两个问题:1、allowMultiQueries 属性仅适用于mysql数据库(MySQL是一个关系型数据库管理系统)不具备 通用性;2、多条sql语句中的某条sql语句执行失败时当前数据库事务无 法回滚。当然当前功能也可以通过软件代码编程设计完成,但随着业务复 杂,关联数据库表数量增加软件代码也将出现成倍增长,代码单元设计繁 琐臃肿,研发调试工作量大,不利于维护。

为了解决现有技术的问题,本发明提供提供一种执行多条sql语句的方 法,其主要是在启动预设应用程序中的预设功能时,通过获取预设的数据 库操作单元,并判断所述数据库操作单元中是否包括多条sql语句,当所述 数据库操作单元中包括多条sql语句时,则获取每一条sql语句对应的操作 对象并依次执行每一条sql语句所对应的所述操作对象,从而保证多条sql 语句执行成功,优化程序代码设计,避免产生繁琐臃肿的代码。

如图1中所示,本发明实施例提供一种执行多条sql语句的方法,所述 执行多条sql语句的方法可以应用于智能终端。在本发明实施例中,所述方 法包括如下步骤:

步骤S100、当启动预设应用程序中的预设功能时,获取预设的数据库 操作单元,并判断所述数据库操作单元中是否包括多条sql语句。

本实施例中的执行多条sql语句的方法是基于Mybatis技术来实现的。 MyBatis是一项解决数据库持久层的开源技术。它支持定制化sql语句、存 储过程以及高级映射,封装并简化JDBC代码创建数据库连接通道,设置数 据库sql语句对应的操作对象,获取结果集等一系列操作。MyBatis通过使 用简单的XML或注解来配置和映射原生信息,将Java代码设计接口和 POJOs(Plain Ordinary Java Object,普通的Java对象)映射成数据库表结 构和数据实体对象,并通过数据实体对象传递sql语句完成软件程序数据库 交互操作。

在本实施例中,当启动某一应用程序中的预设功能时,则就会获取数 据库操作单元,由于数据库操作单元是用于存储sql语句的,而本实施例中 所要实现的目的是执行多条sql语句时,保证多条sql语句执行成功,因此 本实施例在获取到数据库操作单元后,进一步获取数据库操作单元中的sql 语句,判定该数据库操作单元中是否包括多条sql语句。

具体地,如图2中所示,本实施例中对于数据库操作单元中的sql语句 的判断(即判断所述数据库操作单元中是否包括多条sql语句)包括以下步 骤:

步骤S101、当启动预设应用程序中的预设功能时,则从预设的数据模 型中获取所述数据库操作单元;

步骤S102、对所述数据库操作单元进行解析,获取所述数据库操作单 元中的分隔符号,所述分隔符号用于隔开相邻两条sql语句;

步骤S103、若存在所述分隔符号,则确定所述数据库操作单元中包括 多条sql语句。

在本实施例中,对于所述数据库操作单元中是否包括多条sql语句的是 通过对该数据库操作单元中中的分隔符号来确定的。本实施例中,所述数 据库操作单元若存在多条sql语句,则相邻两条sql语句是通过分隔符号来 隔开的。因此本实施例当启动预设应用程序中的预设功能时,则从预设的 数据模型中获取所述数据库操作单元。然后对所述数据库操作单元进行解 析,获取所述数据库操作单元中的分隔符号,所述分隔符号用于隔开相邻两条sql语句。具体实施时,本实施例是通过Mybatis提供的Mapped Statement接口来对数据库操作单元中的sql语句进行获取。由于获取到了 分隔符号,也就说明所述数据库操作单元中的sql语句不止一条,因此就可 以进一步获取分隔符号的个数,判定所述数据库操作单元中所具有的sql语 句的条数,即确定出所述数据库操作单元中包括多条sql语句。在一种实施 方式中,本实施例中的分隔符号为分号(;),当然所述分隔符号可以自定 义设置,而并不是仅仅局限于用将分隔符号限定为分号。

进一步地,本实施例中,所述数据库操作单元是保存在预设的数据模 型中的。具体地,预先将多条sql语句按照预设的顺序进行排列;然后将每 一条所述sql语句分别与一操作对象建立对应关系,并生成存储有所述对应 关系的数据库操作单元;然后将数据库操作单元保存在所述数据模型中, 以便需要时从所述数据模型中获取。本实施例中的每一条sql语句都会有与 之唯一对应的操作对象,通过执行该操作对象,即可对相应的sql语句进行 执行。此外,本实施例中的多条sql语句按照一定顺序进行排列的,并且相 邻之间的sql语句有所述分隔符号隔开,在进行排序时,本实施例可通过sql 语句所对应的操作对象的优先级来对sql语句进行排序,例如,若其中一条 sql语句对应的操作对象为打开音频播放器,另一条sql语句对应的操作对 象为打开视频播放器,而音频播放器的优先级高于视频播放器,因此就将 打开音频播放器对应的sql语句排在打开视频播放器对应的sql语句的前 面。在本实施例中,所述数据模型为Redis模型中,即所述数据库操作单元 是存储在Redis模型中,并且是以HashMap的数据格式存储,HashMap是一 个散列表,它存储的内容是键值对(key-value)映射,即就对应的是本实施 例中sql语句与操作对象之间的映射。

进一步地,步骤S200、当所述数据库操作单元中包括多条sql语句时, 则获取每一条sql语句对应的操作对象。

在本实施例中,当判定所述数据库操作单元中存在多条sql语句后,则 开始获取每一条sql语句所对应的操作对象。由于本实施例中的每一条sql 语句都具有与之对应的操作对象,而sql语句又是按照一定的顺序排列在数 据库操作单元中,因此每一条sql语句都具有一个序号标识,该序号标识是 与对应的操作对象进行绑定的。因此如图3所示,本实施例在获取每一条sql 语句对应的操作对象时,包括以下步骤:

步骤S201、当确定所述所述数据库操作单元中包括多条sql语句时,则 获取每一条sql语句;

步骤S202、根据每一条sql语句的序号标识,查找与每一个序号标志对 应的操作对象。

本实施例中的操作对象包括各种对应的sql语句所包括的各种参数信 息,这些参数信息是用于在执行所述操作对象时,响应应用程序的功能操 作。而当确定数据库操作单元中是存在多条sql语句后,则就可以从该数据 库操作单元中获取每一条sql语句及其对应的操作对象以备用。由于本实施 例中的sql语句又是按照一定的顺序排列在数据库操作单元中,每一条sql 语句都具有一个序号标识,该序号标识是与对应的操作对象进行绑定的, 因此在获取操作对象时就可以根据序号标识进行获取。

进一步地,步骤S300、依次执行每一条sql语句所对应的所述操作对象。

具体地,如图4所示,所述步骤S300包括以下步骤:

步骤S301、从所述数据库操作单元中获取所述数据库操作单元中排列 在第一位的sql语句以及与所述第一位的sql语句对应的操作对象;

步骤S302、执行所述第一位的sql语句对应的操作对象;

步骤S303、当所述第一位的sql语句对应的操作对象执行成功后,按照 所述数据库操作单元中多条sql语句的排列顺序执行下一sql语句的操作对 象。

在本实施例中,当获取到所述每一条sql语句对应的操作对象后,则就 可以依次对每一个操作对象进行执行,从而达到执行所有的sql语句的目 的。而由于存在多条sql语句,因此为了保证所有的sql语句都可以执行成 功,本实施例中首先从所述数据库操作单元中获取所述数据库操作单元中 排列在第一位的sql语句以及与所述第一位的sql语句对应的操作对象;然 后执行所述第一位的sql语句对应的操作对象;当所述第一位的sql语句对 应的操作对象执行成功后,按照所述数据库操作单元中多条sql语句的排列 顺序进行执行剩下的sql语句。而当任意一条sql语句对应的操作对象执行 失败时,则停止执行后续的sql语句所对应的操作对象,并判定所述数据库 操作单元整体执行失败。也就是说,本实施例中,当存在多条sql语句时, 只有所述数据库操作单元中的全部sql语句对应的操作对象执行成功才判 定所述数据库操作单元执行成功,否则只要出现一条sql语句的操作对象执 行失败,即判定所述数据库操作单元执行失败。并且在执行失败后,根据 所述数据库操作单元的执行结果进行事务回滚处理。

值得说明的是,本实施例中在应用程序的某个功能开启后,就会将当 前的数据库操作单元连接对象Connection属性autoCommit=false,以便获 取数据库操作单元中的sql语句。而在执行sql语句所对应的操作对象时, 若已经确定为多sql语句,则修改MappedStatement接口中的sql语句,即 只保留第一条sql语句,其余删除,也就是确保多条sql语句可以依次进行 执行。在进行执行时,可以根据每一条sql语句的序号标识依次找到对应的 操作对象,并依次对该操作对象进行执行。所有的sql语句对应的操作对象 被执行完成后就可以提交当前事务(即执行完成的事务),若存在执行异常 或者失败,则事务回滚,重新进行操作对象的执行操作。在一种实施方式 中,若所述数据库操作单元中仅包括一条sql语句时,则获取所述sql语句 对应的操作对象,并执行所述操作对象。

综上,本实施例在启动预设应用程序中的预设功能时,通过获取预设 的数据库操作单元,并判断所述数据库操作单元中是否包括多条sql语句, 当所述数据库操作单元中包括多条sql语句时,则获取每一条sql语句对应 的操作对象并依次执行每一条sql语句所对应的所述操作对象,从而保证多 条sql语句执行成功,优化程序代码设计,避免产生繁琐臃肿的代码。

如图5中所示,本发明实施例提供一种执行多条sql语句的装置,该装 置包括:语句判定单元510、对象获取单元520以及对象执行单元530。具体 地,语句判定单元510,用于当启动预设应用程序中的预设功能时,获取预 设的数据库操作单元,并判断所述数据库操作单元中是否包括多条sql语 句;对象获取单元520,用于当所述数据库操作单元中包括多条sql语句时, 则获取每一条sql语句对应的操作对象;对象执行单元530,用于依次执行每一条sql语句所对应的所述操作对象。

基于上述实施例,本发明还提供了一种智能终端,其原理框图可以如 图6所示。该智能终端包括通过系统总线连接的处理器、存储器、网络接口、 显示屏、温度传感器。其中,该智能终端的处理器用于提供计算和控制能 力。该智能终端的存储器包括非易失性存储介质、内存储器。该非易失性 存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质

本领域技术人员可以理解,图6中示出的原理框图,仅仅是与本发明 方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的智能 终端的限定,具体的智能终端可以包括比图中所示更多或更少的部件,或 者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种智能终端,包括有存储器,以及一个或 者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配 置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于 进行以下操作的指令:

当启动预设应用程序中的预设功能时,获取预设的数据库操作单元, 并判断所述数据库操作单元中是否包括多条sql语句;

当所述数据库操作单元中包括多条sql语句时,则获取每一条sql语句 对应的操作对象;

依次执行每一条sql语句所对应的所述操作对象。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流 程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序 可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时, 可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中 所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易 失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编 程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或 闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储 器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态 RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM (ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus) 直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动 态RAM(RDRAM)等。

综上所述,本发明公开了一种执行多条sql语句的方法、装置、智能终 端及存储介质,所述方法包括:当启动预设应用程序中的预设功能时,获 取预设的数据库操作单元,并判断所述数据库操作单元中是否包括多条sql 语句;当所述数据库操作单元中包括多条sql语句时,则获取每一条sql语 句对应的操作对象;依次执行每一条sql语句所对应的所述操作对象。本发 明解决应用程序中的功能操作需同时执行多条sql语句的问题,将数据操作 集中到数据库层处理,保证多条sql语句执行成功,优化程序代码设计,避 免产生繁琐臃肿的代码。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术 人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应 属于本发明所附权利要求的保护范围。

相关技术
  • 执行多条sql语句的方法、装置、智能终端及存储介质
  • SQL语句的执行方法、装置、设备和存储介质
技术分类

06120113084000