CN110989998A - 动态sql语句写入代码的方法、程序代码执行方法及平台 - Google Patents

动态sql语句写入代码的方法、程序代码执行方法及平台 Download PDF

Info

Publication number
CN110989998A
CN110989998A CN201911291264.6A CN201911291264A CN110989998A CN 110989998 A CN110989998 A CN 110989998A CN 201911291264 A CN201911291264 A CN 201911291264A CN 110989998 A CN110989998 A CN 110989998A
Authority
CN
China
Prior art keywords
file
executable
groovy
program code
execution
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
Application number
CN201911291264.6A
Other languages
English (en)
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.)
Chongqing Ruiyun Technology Co ltd
Original Assignee
Chongqing Ruiyun 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 Chongqing Ruiyun Technology Co ltd filed Critical Chongqing Ruiyun Technology Co ltd
Priority to CN201911291264.6A priority Critical patent/CN110989998A/zh
Publication of CN110989998A publication Critical patent/CN110989998A/zh
Pending legal-status Critical Current

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/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供一种动态sql语句写入代码的方法、程序代码执行方法及平台,该动态sql语句写入代码的方法通过在目标程序代码编写需要使用mybatis框架过程中,接收groovy文件创建指令;根据groovy文件创建指令,对应创建并展示groovy空白文件;接收外部在groovy空白文件中编辑的动态sql语句;接收文件保存指令,生成目标程序代码的可执行groovy文件,并保存;减小整体编码工作量的同时,提高了代码阅读便利性,减轻了程序IO压力,提高了程序整体响应能力。

Description

动态sql语句写入代码的方法、程序代码执行方法及平台
技术领域
本发明涉及计算机技术领域,尤其涉及一种动态sql语句写入代码的方法、程序代码执行方法及平台。
背景技术
Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题。
MyBatis本是apache的一个开源项目iBatis,iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架,它支持定制化SQL、存储过程以及高级映射。
Sql即Structured Query Language,结构化查询语言,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
在spring框架内,使用mybatis时往往要将sql内容写入特定格式的xml文件中,使原本完整的数据操作层分为两个逻辑关联的不同格式文件:写有数据操作定义的java文件和写有数据具体操作sql的xml文件。
这种做法从语言层面割裂了原本完整的一个操作,给开发人员造成代码阅读障碍,对后期维护造成巨大不便,同时需要依靠java语言进行xml内容的解析,影响应用整体响应速度。
传统解决此问题的方案是,依靠mybatis提供的注解,将sql语句作为注解的内容写入java接口定义中,但是此方案存在天然的不足:注解无法使用mybatis框架的标签,复杂sql语句、特别是带有复杂判断逻辑分支的语句无法直接写入注解中,因此该方案整体应用度不高。
发明内容
为了解决背景技术中所存在的问题,本发明提供一种动态sql语句写入代码的方法、程序代码执行方法及平台。
为解决上述技术问题,本发明提供一种动态sql语句写入代码的方法,包括:
在目标程序代码编写需要使用mybatis框架过程中,接收groovy文件创建指令;
根据所述groovy文件创建指令,对应创建并展示groovy空白文件;
接收外部在所述groovy空白文件中编辑的动态sql语句;
接收文件保存指令,生成所述目标程序代码的可执行groovy文件,并保存。
可选的,所述在代码编写需要使用mybatis框架过程中,还包括:
接收java文件创建指令,以生成所述目标程序代码的可执行java文件,并保存。
可选的,所述方法还包括:
在保存所述可执行groovy文件时,将其与所述可执行java文件进行关联,以使运行所述目标程序代码时,可关联所述可执行java文件与所述可执行groovy文件。
本发明还提供一种程序代码执行方法,包括:
接收对目标程序代码的执行指令;
根据所述执行指令,获取所述目标程序代码的可执行java文件以及可执行groovy文件;所述可执行groovy文件存储有所述目标程序代码的动态sql语句;
基于可执行java文件以及所述可执行groovy文件,实现对所述目标程序代码的执行过程。
可选的,所述执行指令中携带有所述可执行java文件的第一存储地址,以及可执行groovy文件的第二存储地址。
可选的,所述根据所述执行指令,获取所述目标程序代码的可执行java文件以及可执行groovy文件包括:
对所述执行指令进行解析,得到所述可执行java文件的第一存储地址,以及可执行groovy文件的第二存储地址;根据所述第一存储地址获取到所述可执行java文件;根据所述第二存储地址获取到所述可执行groovy文件。
本发明还提供一种程序代码执行平台,包括:
指令接收模块,用于接收对目标程序代码的执行指令;
文件索引模块,用于根据所述执行指令,获取所述目标程序代码的可执行java文件以及可执行groovy文件;所述可执行groovy文件存储有所述目标程序代码的动态sql语句;
代码执行模块,用于基于可执行java文件以及所述可执行groovy文件,实现对所述目标程序代码的执行过程。
可选的,所述执行指令中携带有所述可执行java文件的第一存储地址,以及可执行groovy文件的第二存储地址。
可选的,所述文件索引模块通过解析所述执行指令,得到所述第一存储地址、所述第二存储地址,并根据所述第一存储地址获得到所述可执行java文件;以及根据所述第二存储地址获得到所述可执行groovy文件。
本发明的有益效果是:
根据本发明提供的动态sql语句写入代码的方法、程序代码执行方法及平台,该动态sql语句写入代码的方法通过在目标程序代码编写需要使用mybatis框架过程中,接收groovy文件创建指令;根据groovy文件创建指令,对应创建并展示groovy空白文件;接收外部在groovy空白文件中编辑的动态sql语句;接收文件保存指令,生成目标程序代码的可执行groovy文件,并保存;充分利用了spring框架的IOC(Inversion of Control,控制反转)特性,同时利用java虚拟机JVM平台支持的脚本语言groovy的多行字符串特性,将动态sql语句直接作为字符串进行实现,达到方法签名即方法定义,方法实现即逻辑实现的效果,将原来割裂的两种文件格式合二为一,减小整体编码工作量的同时,大大提高了代码阅读便利性,降低后期维护成本;另外,将动态sql语句作为字符串进行实现,大大减轻了程序IO压力,提高了程序整体响应能力,提高了系统吞吐量。
附图说明
图1为本发明实施例一的动态sql语句写入代码的方法流程示意图;
图2为本发明实施例二的程序代码执行方法流程示意图;
图3为本发明实施例三的程序代码执行平台结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一:
为了解决当前在使用mybatis框架时,需要将动态sql内容写入xml特定文件格式中,由于语言层面割裂,进而导致影响程序响应速度,且不易阅读代码、对后期维护不便的问题,本实施例提供一种动态sql语句写入代码的方法,通过利用JVM平台支持的脚本语言groovy的多行字符串特性,将动态sql语句直接作为字符串进行实现,达到提高代码阅读便利性,降低后期维护成本,减轻程序IO压力,提高程序整体响应能力的效果。
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,引入JVM后,Java语言在不同平台上运行时不需要重新编译,使得Java语言可以屏蔽具体平台相关的信息,让Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Groovy是一种基于JVM的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy代码能够与Java代码很好地结合,也能用于扩展现有代码。由于其运行在JVM上的特性,Groovy也可以使用其他非Java语言编写的库。
请参见图1,图1为本实施例的动态sql语句写入代码的方法流程示意图,该方法主要包括如下步骤:
S101、在目标程序代码编写需要使用mybatis框架过程中,接收groovy文件创建指令。
可选的,在使用mybatis框架过程的过程中,还包括:
接收java文件创建指令,以生成目标程序代码的可执行java文件,并保存。
目标程序代码主要有两部分组成,一是写有数据具体操作的动态sql语句,二是写有数据操作定义的java文件。
S102、根据groovy文件创建指令,对应创建并展示groovy空白文件。
S103、接收外部在groovy空白文件中编辑的动态sql语句。
S104、接收文件保存指令,生成目标程序代码的可执行groovy文件,并保存。
在保存可执行groovy文件时,将其与可执行java文件进行关联,以使运行目标程序代码时,可关联可执行java文件与可执行groovy文件,保证程序的正常执行。
本实施例通过将目标程序代码的动态sql语句,写入groovy文件中,可以解决将动态sql内容写入特定格式的xml文件导致的语言层面割裂,给开发人员造成代码阅读障碍,对后期维护造成不便,同时需要依靠java语言进行xml内容的解析,影响应用整体响应速度的问题。
通过利用java虚拟机JVM平台支持的脚本语言groovy的多行字符串特性,将sql语句直接作为字符串进行实现,达到方法签名即方法定义,方法实现即逻辑实现的效果,将原来割裂的两个文件格式合二为一,减小整体编码工作量的同时,大大提高代码阅读便利性,降低后期维护成本,同时,将sql语句作为字符串进行实现,大大减轻应用IO压力,提高应用整体响应能量,提高系统吞吐量。
本方案的原理在于利用spring的IOC特性,将MVC模型中强依赖的各个实例拆分为注入依赖的形式,groovy实现的数据操作层对象也是spring容器管理下的一个实例,自然也是能够被IOC容器所注入的。利用完全兼容java语法、可无缝集成java语言的、对java语言进行相当内容的扩展的groovy语言的多行字符串特性,可完整保持动态sql语句的各种格式,同时作为字符串,对mybatis提供的各种逻辑判断标签也都兼容。对于传统java开发者也不存在语法的陌生和编辑器的陌生,java与groovy都是基于JVM平台,完全可以互相引用。故此方案,也不失为一种解决mybatis框架的臃肿xml文件的方法。
实施例二:
本实施例在上述实施例一的基础上,提供一种程序代码执行方法,请参见图2,该方法主要包括如下步骤:
S201、接收对目标程序代码的执行指令。
可选的,执行指令中携带有可执行java文件的第一存储地址,以及可执行groovy文件的第二存储地址。
S202、根据执行指令,获取目标程序代码的可执行java文件以及可执行groovy文件;其中,可执行groovy文件存储有目标程序代码的动态sql语句。
对执行指令进行解析,得到可执行java文件的第一存储地址,以及可执行groovy文件的第二存储地址;根据该第一存储地址获取到目标程序代码的可执行java文件;根据第二存储地址获取到目标程序代码的的可执行groovy文件。
S203、基于可执行java文件以及可执行groovy文件,实现对目标程序代码的执行过程。
在JVM平台执行程序代码过程中,无需对xml文件格式内容的解析,java与groovy都是基于JVM平台,完全可以互相引用,可以提高应用整体响应速度。
实施例三:
本实施例在上述实施例一和/或实施例二的基础上,提供一种程序代码执行平台,请参见图3,该平台包括:
令接收模块31,用于接收对目标程序代码的执行指令。
文件索引模块32,用于根据执行指令,获取目标程序代码的可执行java文件以及可执行groovy文件;其中,可执行groovy文件存储有目标程序代码的动态sql语句。
其中,执行指令中携带有可执行java文件的第一存储地址,以及可执行groovy文件的第二存储地址。
可选的,文件索引模块32通过解析执行指令,得到第一存储地址、第二存储地址,并根据该第一存储地址获得到可执行java文件;以及根据该第二存储地址获得到可执行groovy文件。
代码执行模块33,用于基于可执行java文件以及可执行groovy文件,实现对目标程序代码的执行过程。
本实施例中,该程序代码执行平台具体可以为JVM平台。
显然,本领域的技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (9)

1.一种动态sql语句写入代码的方法,其特征在于,包括:
在目标程序代码编写需要使用mybatis框架过程中,接收groovy文件创建指令;
根据所述groovy文件创建指令,对应创建并展示groovy空白文件;
接收外部在所述groovy空白文件中编辑的动态sql语句;
接收文件保存指令,生成所述目标程序代码的可执行groovy文件,并保存。
2.如权利要求1所述的动态sql语句写入代码的方法,其特征在于,所述在代码编写需要使用mybatis框架过程中,还包括:
接收java文件创建指令,以生成所述目标程序代码的可执行java文件,并保存。
3.如权利要求2所述的动态sql语句写入代码的方法,其特征在于,所述方法还包括:
在保存所述可执行groovy文件时,将其与所述可执行java文件进行关联,以使运行所述目标程序代码时,可关联所述可执行java文件与所述可执行groovy文件。
4.一种程序代码执行方法,其特征在于,包括:
接收对目标程序代码的执行指令;
根据所述执行指令,获取所述目标程序代码的可执行java文件以及可执行groovy文件;所述可执行groovy文件存储有所述目标程序代码的动态sql语句;
基于所述可执行java文件以及所述可执行groovy文件,实现对所述目标程序代码的执行过程。
5.如权利要求4所述的程序代码执行方法,其特征在于,所述执行指令中携带有所述可执行java文件的第一存储地址,以及可执行groovy文件的第二存储地址。
6.如权利要求5所述的程序代码执行方法,其特征在于,所述根据所述执行指令,获取所述目标程序代码的可执行java文件以及可执行groovy文件包括:
对所述执行指令进行解析,得到所述可执行java文件的第一存储地址,以及可执行groovy文件的第二存储地址;根据所述第一存储地址获取到所述可执行java文件;根据所述第二存储地址获取到所述可执行groovy文件。
7.一种程序代码执行平台,其特征在于,包括:
指令接收模块,用于接收对目标程序代码的执行指令;
文件索引模块,用于根据所述执行指令,获取所述目标程序代码的可执行java文件以及可执行groovy文件;所述可执行groovy文件存储有所述目标程序代码的动态sql语句;
代码执行模块,用于基于所述可执行java文件以及所述可执行groovy文件,实现对所述目标程序代码的执行过程。
8.如权利要求7所述的程序代码执行平台,其特征在于,所述执行指令中携带有所述可执行java文件的第一存储地址,以及可执行groovy文件的第二存储地址。
9.如权利要求7所述的程序代码执行平台,其特征在于,所述文件索引模块通过解析所述执行指令,得到所述第一存储地址、所述第二存储地址,并根据所述第一存储地址获得到所述可执行java文件;以及根据所述第二存储地址获得到所述可执行groovy文件。
CN201911291264.6A 2019-12-16 2019-12-16 动态sql语句写入代码的方法、程序代码执行方法及平台 Pending CN110989998A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911291264.6A CN110989998A (zh) 2019-12-16 2019-12-16 动态sql语句写入代码的方法、程序代码执行方法及平台

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911291264.6A CN110989998A (zh) 2019-12-16 2019-12-16 动态sql语句写入代码的方法、程序代码执行方法及平台

Publications (1)

Publication Number Publication Date
CN110989998A true CN110989998A (zh) 2020-04-10

Family

ID=70093790

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911291264.6A Pending CN110989998A (zh) 2019-12-16 2019-12-16 动态sql语句写入代码的方法、程序代码执行方法及平台

Country Status (1)

Country Link
CN (1) CN110989998A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506611A (zh) * 2020-04-21 2020-08-07 北京同邦卓益科技有限公司 数据的查询方法、装置、设备及存储介质
CN113656036A (zh) * 2020-05-12 2021-11-16 深圳兆日科技股份有限公司 基于Mybatis的编译方法、装置、终端及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110153351A1 (en) * 2009-12-17 2011-06-23 Gregory Vesper Collaborative medical imaging web application
CN109992259A (zh) * 2019-04-15 2019-07-09 成都四方伟业软件股份有限公司 函数动态创建方法、装置及电子设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110153351A1 (en) * 2009-12-17 2011-06-23 Gregory Vesper Collaborative medical imaging web application
CN109992259A (zh) * 2019-04-15 2019-07-09 成都四方伟业软件股份有限公司 函数动态创建方法、装置及电子设备

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
FOLLOWYOURHEART2015: "SpringBoot集成Groovy、Mybatis注解 实现动态SQL,帮你摆脱繁琐的XML配置", 《HTTPS://BLOG.CSDN.NET/MUERHUOXU/ARTICLE/DETAILS/86756795》 *
MAS_WANG: "Groovy详解", 《HTTPS://WWW.JIANSHU.COM/P/8C6DCF6727C8》 *
ZZZ: "Java 实例 - 如何执行指定class文件目录(classpath)", 《HTTPS://WWW.RUNOOB.COM/JAVA/ENV-CLASSPATH.HTML》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506611A (zh) * 2020-04-21 2020-08-07 北京同邦卓益科技有限公司 数据的查询方法、装置、设备及存储介质
CN113656036A (zh) * 2020-05-12 2021-11-16 深圳兆日科技股份有限公司 基于Mybatis的编译方法、装置、终端及介质
CN113656036B (zh) * 2020-05-12 2024-03-01 深圳兆日科技股份有限公司 基于Mybatis的编译方法、装置、终端及介质

Similar Documents

Publication Publication Date Title
CN103064720B (zh) 简档导向的jit代码生成
US8935683B2 (en) Inline function linking
KR100661393B1 (ko) 웹 프로그래밍 환경을 응용한 웹사이트 관리 시스템 및방법
US7610545B2 (en) Annotations for tracking provenance
CN108139891B (zh) 用于生成建议以纠正未定义标记错误的方法和系统
CN110955431A (zh) 编译环境的处理方法及装置
US10409559B2 (en) Single-source-base compilation for multiple target environments
US9141344B2 (en) Hover help support for application source code
CA2753626C (en) Packed data objects
US11288062B2 (en) Automatic source code refactoring
US6665688B1 (en) Method and system for automatically regenerating data on-demand
US8225286B2 (en) Debugging interpreted input
CN110989998A (zh) 动态sql语句写入代码的方法、程序代码执行方法及平台
CN111475150B (zh) 一种跨语言绑定方法、装置、设备及存储介质
KR20080038306A (ko) 널가능과 후 바인딩
CN104317723B (zh) 一种驱动程序运行信息的跟踪方法及系统
US7530060B1 (en) Methods and computer program product for optimizing binaries with coding style formalization
NO329240B1 (no) System og fremgangsmate for forklarende definering og bruk av undergrupper innenfor dokumentkoding
CN105867886B (zh) 一种写表格的方法及装置
CN117667095A (zh) 一种页面代码导出方法、装置、设备和存储介质
US20140359579A1 (en) Combined data and instruction test content
US9405739B1 (en) Source code format for IDE code development with embedded objects
US9015679B2 (en) System and method for translating business application functions into DBMS internal programming language procedures
US10102115B2 (en) Incremental program construction from embedded program code for external testing
CN105843661A (zh) 一种面向主机系统的代码重定位方法及其系统

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20200410