CN115599386A - 代码生成方法、装置、设备及存储介质 - Google Patents
代码生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115599386A CN115599386A CN202211225858.9A CN202211225858A CN115599386A CN 115599386 A CN115599386 A CN 115599386A CN 202211225858 A CN202211225858 A CN 202211225858A CN 115599386 A CN115599386 A CN 115599386A
- Authority
- CN
- China
- Prior art keywords
- code
- entity class
- class data
- template file
- mapping
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供了一种代码生成方法、装置、设备及存储介质,可以应用于软件开发技术领域。该代码生成方法包括:响应于前端发送的目标代码生成请求,从目标代码生成请求中获取建表语句和代码标识符;通过后端接口解析建表语句,得到多个实体类数据;通过代码标识符映射得到代码模板文件,代码模板文件包括与多个实体类数据对应的多个标签;根据多个标签,将多个实体类数据填充至代码模板文件,得到多个代码块;以及将多个代码块返回至前端,以对多个代码块进行渲染,得到目标代码。
Description
技术领域
本公开涉及软件开发技术领域,尤其涉及一种代码生成方法、装置、设备、介质和程序产品。
背景技术
在软件项目开发的过程中,通常会存在很多结构类似的代码。这些代码的格式较为固定,且结构也会随着项目的迭代趋于稳定。此外,这些代码的数量巨大,通过代码生成器生成此类代码,可以有效提高项目的开发效率。
例如,常见的代码生成器通过对代码的固定格式进行提取后,将固定格式绑定到模板中,实现将动态数据解析到静态模板中来。但是这类代码生成器支持的场景通常较为单一,仅生成一种类型的业务代码,限制了代码生成器的使用效果。
发明内容
鉴于上述问题,本公开提供了代码生成方法、装置、设备、介质和程序产品。
根据本公开的第一个方面,提供了一种代码生成方法,包括:响应于前端发送的目标代码生成请求,从目标代码生成请求中获取建表语句和代码标识符;通过后端接口解析建表语句,得到多个实体类数据;通过代码标识符映射得到代码模板文件,代码模板文件包括与多个实体类数据对应的多个标签;根据多个标签,将多个实体类数据填充至代码模板文件,得到多个代码块;以及将多个代码块返回至前端,以对多个代码块进行渲染,得到目标代码。
根据本公开的实施例,响应于前端发送的目标代码生成请求,从请求中获取建表语句和代码类型标识,包括:响应于前端发送的目标代码生成请求,启动Web服务;通过Web服务,调用html页面端;以及通过html页面端解析目标代码生成请求,得到建表语句和代码类型标识。
根据本公开的实施例,通过代码类型标识符映射得到代码模板文件,包括:解析代码标识符,得到目标代码的代码类型和目标代码包括的多个子程序代码;根据代码类型,分别确定多个子程序代码的多个运行组件;通过调用多个运行组件,生成目标代码的代码结构;以及根据预设模板引擎,对代码结构进行映射,得到代码模板文件。
根据本公开的实施例,通过代码类型标识符映射得到代码模板文件,还包括:在代码结构上为多个运行组件的每个运行组件设置映射符号;以及通过预设模板引擎,对多个映射符号进行映射,得到与多个实体类数据对应的多个标签。
根据本公开的实施例,根据多个标签,将多个实体类数据填充至代码模板文件,得到多个代码块,包括:获取多个实体类数据的数据类型;根据数据类型,链接多个标签,以分别确定多个实体类数据的填充地址;以及根据填充地址,将多个实体类数据填充代码模板文件,得到多个代码块。
根据本公开的实施例,通过后端接口解析建表语句,得到多个实体类数据,包括:确定建表语句的数据库类型;根据数据库类型,通过后端接口对建表语句的数据定义语言进行解析,得到多个字段;以及将多个字段分别映射为都多个实体类数据。
根据本公开的实施例,将多个代码块返回至前端,以对多个代码块进行渲染,得到目标代码,包括:通过前端对多个代码块进行拼接,得到初始目标代码;以及通过前端对初始目标代码进行修正,得到目标代码。
本公开的第二方面提供了一种代码生成装置,包括:获取模块,用于响应于前端发送的目标代码生成请求,从目标代码生成请求中获取建表语句和代码标识符;解析模块,用于通过后端接口解析建表语句,得到多个实体类数据;映射模块,用于通过代码标识符映射得到代码模板文件,代码模板文件包括与多个实体类数据对应的多个标签;填充模块,用于根据多个标签,将多个实体类数据填充至代码模板文件,得到多个代码块;以及返回模块,用于将多个代码块返回至前端,以对多个代码块进行渲染,得到目标代码。
本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器执行上述方法。
本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述方法。
本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述方法。
根据本公开提供了一种代码生成方法、装置、设备、介质和程序产品,通过代码标识符关联代码模板文件,满足多种业务场景下的代码自动生成需求。此外,通过代码模板文件的标签链接建表语句中解析出的实体类数据,提高自动生成代码的效率和准确率。因此,至少部分的解决了现有技术中代码生成器应用场景单一的技术问题,实现了灵活生成多种类型代码的技术效果。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的代码生成方法、装置、设备、介质和程序产品的应用场景图;
图2示意性示出了根据本公开实施例的代码生成方法的流程图;
图3示意性示出了根据本公开实施例的响应请求的流程图;
图4示意性示出了根据本公开实施例的生成代码模板文件的流程图;
图5示意性示出了根据本公开实施例的代码生成装置的结构框图;以及
图6示意性示出了根据本公开实施例的适于实现代码生成方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
在本公开的技术方案中,所涉及的数据(如包括但不限于用户个人信息)的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
本公开的实施例提供了一种代码生成方法,包括:响应于前端发送的目标代码生成请求,从目标代码生成请求中获取建表语句和代码标识符;通过后端接口解析建表语句,得到多个实体类数据;通过代码标识符映射得到代码模板文件,代码模板文件包括与多个实体类数据对应的多个标签;根据多个标签,将多个实体类数据填充至代码模板文件,得到多个代码块;以及将多个代码块返回至前端,以对多个代码块进行渲染,得到目标代码。
图1示意性示出了根据本公开实施例的代码生成方法、装置、设备、介质和程序产品的应用场景图。
如图1所示,根据该实施例的应用场景100可以包第一终端设备101、第二终端设备102、第三终端设备103、网络104和服务器105。网络104用以在第一终端设备101、第二终端设备102、第三终端设备103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用第一终端设备101、第二终端设备102、第三终端设备103通过网络104与服务器105交互,以接收或发送消息等。第一终端设备101、第二终端设备102、第三终端设备103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
第一终端设备101、第二终端设备102、第三终端设备103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用第一终端设备101、第二终端设备102、第三终端设备103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的代码生成方法一般可以由服务器105执行。相应地,本公开实施例所提供的代码生成装置一般可以设置于服务器105中。本公开实施例所提供的代码生成方法也可以由不同于服务器105且能够与第一终端设备101、第二终端设备102、第三终端设备103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的代码生成装置也可以设置于不同于服务器105且能够与第一终端设备101、第二终端设备102、第三终端设备103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
以下将基于图1描述的场景,通过图2~图4对公开实施例的代码生成方法进行详细描述。
图2示意性示出了根据本公开实施例的代码生成方法的流程图。
如图2所示,该实施例的代码生成方法包括操作S210~操作S250。
在操作S210,响应于前端发送的目标代码生成请求,从目标代码生成请求中获取建表语句和代码标识符。
在本公开实施例中,目标代码生成请求可以为操作人员在前端发起的请求。前端可以为操作人员提供人机交互界面。操作人员在人机交互界面中输入相关信息,前端对操作人员输入的相关信息进行处理,生成目标代码生成请求。
前端生成的目标代码生成请求可以通过post请求发送至后端,后端对该请求进行解析,获取请求包括的建表语句和代码标识符。
代码标识符可以用于指示代码主题,例如ui代码、jpa代码、mybatis代码和jdbc代码等等。代码标识符也可以用于指示代码语言,例如C语言代码、Java代码和Python代码等等。
例如,建表语句和代码标识符可以是由操作人员在前端的人机交互界面中输入的。操作人员可以在前端的人机交互界面输入编写的建表语句,并点选代码标识符。前端将操作人员输入的建表语句和代码标识符进行打包,并生成目标代码的生成请求后,发送至后端。
例如,建表语句和代码标识符也可以是根据操作人员的输入自动生成的。操作人员可以在前端的人机交互界面输入建表参数和数据库的类型,通过与该类型的数据库对应的建表模型,将建表参数替换到或添加到建表模型中。操作人员还可以在前端的人机交互界面选择目标代码的类型。前端对操作人员选择的代码类型进行编译,转换成后端可识别的代码标识符。
建表参数包括以下至少一种:数据存储路径、分隔符、注释、主键、外键和索引。数据库的类型可以包括oracle、hive、gbase、sqlite、mysql和postgreSQL等等。
例如,在建表语句用于创建关于银行用户身份信息的数据库表的情况下,建表语句描述的数据表内容可以包括用户编号、用户名、状态、创建时间和用户信息等等。例如,在建表语句用于创建关于项目案例的数据库表的情况下,建表语句描述的数据表内容可以包括案例ID、案例名称、状态、创建信息和案件信息。需要说明是,本公开涉及的用户相关信息的采集和使用,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
在操作S220,通过后端接口解析建表语句,得到多个实体类数据。
在本公开实施例中,后端可以通过定义一个数据库的生成类信息对建表语句进行解析。例如,操作S220通过后端接口解析建表语句,得到多个实体类数据的步骤可以包括确定建表语句的数据库类型;根据数据库类型,通过后端接口对建表语句的数据定义语言进行解析,得到多个字段;以及将多个字段分别映射为都多个实体类数据。
例如,数据库为SQL数据库,后端可以定义一个解析DDL SQL生成类信息。DDL SQL生成类信息用于对建表语句的数据定义语言进行解析,得到多个字段。字段可以被封装为实体类数据,例如实体类数据可以包括数据基本信息实体、自定义数据实体、表实体和列实体。自定义数据实体可为操作人员设计的实体,例如包名、字段注释、包路径和命名类型等。
在操作S230,通过代码标识符映射得到代码模板文件,代码模板文件包括与多个实体类数据对应的多个标签。
在本公开实施例中,码模板文件可以是预先配置的,例如,代码模板文件可以是创建的freeMarker配置实例。根据代码标识符遍历数据库可以确定代码模板文件的存储路径,根据存储路径查找得到代码模板文件。例如,通过模板加载器加载代码模板文件,并且在把代码模板文件加载在缓存中后,通过freeMarker实例的存储路径来获取代码模板文件。
代码模板文件包括多个标签。标签可以用于标注代码组分部分。例如,标签<@>用于标注代码中的宏,标签<#---->用于标注代码中的注释,标签${…}用于代码中的实际值。
在操作S240,根据多个标签,将多个实体类数据填充至代码模板文件,得到多个代码块。
在本公开实施例中,代码模板文件会根据多个标签对实体类数据进行自动解析,并将解析出的数据填充至相应标签标注的位置。
例如,操作S240根据多个标签,将多个实体类数据填充至代码模板文件,得到多个代码块的步骤可以包括:获取多个实体类数据的数据类型;根据数据类型,链接多个标签,以分别确定多个实体类数据的填充地址;以及根据填充地址,将多个实体类数据填充代码模板文件,得到多个代码块。
代码模板文件会根据多个标签对实体类数据进行自动解析,确定每个实体类数据的数据类型。数据类型与标签一一对应,例如,在确定实体类数据解析的数据类型为字段注释的情况下,可以将该实体类数据链接至标签<#---->处,并将从实体类数据中解析出的注释填充至标签<#---->中。
在本公开实施例中,实体类数据的数据类型与标签可以以键值对或键值对列表的形式存储在数据库中。数据类型可以为键,标签为值。在解析出实体类的数据类型后,在键值对列表中查找与该数据类型对应的标签。在确定标签后,遍历代码文件模板中该标签,得到该标签的在代码文件模板中的位置。将该数据类型的实体类数据链接值标签所在位置,以确定实体类数据在代码模板文件中的填充位置。
标签还可以为多级标签,多级标签表征可以代码的层级结构。根据多级代码,可以快速定位实体类数据在多层代码结构中的填充地址。
通过实例类数据的数据类型与代码模板文件中标签的对应关系,以标签为索引,可以将每个实体类数据快速链接至代码模板文件的相应位置。此外,通过在代码模板文件中设置用于链接实体类数据的标签,可以减少实体类数据漏填和误填的概率,提高代码生成的准确性。
在操作S250,将多个代码块返回至前端,以对多个代码块进行渲染,得到目标代码。
在本公开实施例中,代码块可认为是通过代码符号“{}”将多行代码封装在一起,形成一个独立的数据体。代码块可以用于实现特定的算法。例如,对于Java代码,代码块可以包括普通代码块、静态代码块、构造代码块和同步代码块。通过代码块可以创建对象或加载类。在创建的多个对象中都有重复的语句的情况下,可以将重复的语句放到代码块中,提高代码的复用性。
在本公开实施例中,代码块是可以被增加、删除和修改的。将后端生成的多个代码块返回至前端后,可以由前端对多个代码块进行调用,以生成目标代码,并将目标代码在前端的人机交互界面中展示。
例如,在操作S250将多个代码块返回至前端,以对多个代码块进行渲染,得到目标代码的步骤可以包括:通过前端对多个代码块进行拼接,得到初始目标代码;以及通过前端对初始目标代码进行修正,得到目标代码。
在本公开实施例中,对多个代码块的操作可以是基于操作人员输入的操作指令而执行的,也可以是基于前端内置的渲染模型而执行的。例如,操作人员可以在前端的人机交互界面上输入对多个代码块的操作指令,前端响应于操作人员输入的操作指令,对多个代码块进行拼接和修正。例如,前端在接收到后端返回的多个代码块后,确定代码块对应的代码类型,并通过该代码类型的渲染模型对多个代码块进行拼接和修正。渲染模型可以内置有该代码类型的代码语言规则。
通过本公开实施,通过代码标识符关联代码模板文件,多种代码模板文件适用于多种代码类型的代码生成,以满足多种业务场景下的代码自动生成需求。通过代码模板文件的标签链接建表语句中解析出的实体类数据,可以准确捕获代码模板文件所需的实体类数据,提高自动生成代码的效率和准确率。
图3示意性示出了根据本公开实施例的响应请求的流程图。
如图3所示,该实施例的在操作S210中响应于前端发送的目标代码生成请求,从请求中获取建表语句和代码类型标识的步骤包括操作S310~操作S330。
在操作S310,响应于前端发送的目标代码生成请求,启动Web服务。
在操作S320,通过Web服务,调用html页面端。
在操作S330,通过html页面端解析目标代码生成请求,得到建表语句和代码类型标识。
在本公开实施例中,代码生成方法可以是基于代码生成器运行。代码生成器可以被部署在Web服务器上,实现多个操作人员对代码生成器的共用。
操作人员在前端发起目标代码生成请求,响应于来自前端的目标代码生成请求,启动Web服务器上的Web服务,并将目标代码生成请求发送至代码生成器,并在Web服务器上运行代码生成器。
代码生成器可以通过html页面端为操作人员提供人机交互界面。通过Web服务调用html页面端,为操作人员创建html页面。html页面与Web服务器建立通信连接。操作人员通过html页面可以向代码生成器发送输入的操作指令,操作人员还可以通过html页面查看代码生成器的代码生成结果。
在本公开实施例中,操作人员发送的目标代码生成请求可以由html页面端进行解析,也可以由web服务器进行解析。
例如,操作人员在html页面上输入目标代码生成请求,html页面端接收目标代码生成请求,并对目标代码生成请求进行解析,得到建表语句和代码类型标识。html页面端将建表语句和代码类型标识发送至Web服务器,由Web服务器上的代码生成器执行后续的代码生成操作。
例如,操作人员在html页面上输入目标代码生成请求,html页面端接收目标代码生成请求,并将目标代码生成请求发送至Web服务器,由Web服务器上的代码生成器对目标代码生成请求进行解析,得到建表语句和代码类型标识,并执行后续的代码生成操作。
在本公开实施例中,将执行本公开代码生成方法的代码生成器部署在Web服务器上后,可以在终端设备上提供登录接口。操作人员通过终端设备的登录接口连接Web服务器上的代码生成器,并通过Web服务提供的html页面输入操作指令和查看生成结果。由此在终端设备上安装登录接口后,就可以实现对代码生成器的共有。当存在新增终端设备时,也可以仅需要为新增终端设备安装登录接口即可提供代码生成服务。在需要限制终端设备对该代码生成器使用的情况下,通过删除该终端设备的登录接口,停止提供代码生成服务。在对代码生成器更新维护后,可以对终端设备上的登录接口进行更新,以更新代码生成服务。
图4示意性示出了根据本公开实施例的生成代码模板文件的流程图。
如图4所示,该实施例的在操作S230中通过代码类型标识符映射得到代码模板文件的步骤包括操作S410~操作S440。
在操作S410,解析代码标识符,得到目标代码的代码类型和目标代码包括的多个子程序代码。
在操作S420,根据代码类型,分别确定多个子程序代码的多个运行组件。
在操作S430,通过调用多个运行组件,生成目标代码的代码结构。
在操作S440,根据预设模板引擎,对代码结构进行映射,得到代码模板文件。
在本公开实施例中,代码类型可以包括代码语言的类型,例如C语言代码、Java代码和Python代码。子程序代码可以包括多种代码主题的代码,例如ui代码、jpa代码、mybatis代码和jdbc代码等等。
多个子程序代码中的每个子程序代码可以包括多个运行组件,根据代码类型可以分别为每个子程序代码从多个运行组件中确定一个运行组件。
例如,ui代码可以包括swagger-ui、element-ui、bootstrap-ui、layui-edit和layui-list等运行组件。jpa代码可以包括entity、repository和jpacontroller等运行组件。mybatis代码可以包括controller、service、service-impl、mapper和model等运行组件。
在确定每个子程序代码的运行组件后,为保证目标代码的可用性,需要生成能够调用前文所述的多个运行组件的代码结构。
例如,预设模板引擎可以为Freemaker模板引擎。通过Freemaker模板引擎以代码模板为标准对代码结构进行映射,将代码结构和多个运行组件转换成代码模板文件。
Freemaker模板引擎生成的代码模板文件以.ftl文件的形式存储在数据库中。数据库中存储的代码模板文件可以与代码标识符关联存储。代码模板文件还可以是通过Freemaker模板引擎预先配置生成的。
在本公开实施例中,操作S230中通过代码类型标识符映射得到代码模板文件的步骤在操作S410~操作S440的基础上还可以包括:在代码结构上为多个运行组件的每个运行组件设置映射符号;以及通过预设模板引擎,对多个映射符号进行映射,得到与多个实体类数据对应的多个标签。
映射符号可以为每个运行组件的标记符号,用于区分不同的运行组件。模板引擎在对代码结构进行映射时,根据运行组件的标记符号,为每个运行组件的代码部分生成相应的多个标签。每个组件对应的多个标签的形式遵循对应组件的代码运行规则,形式可以相同,也可以不相同。
通过本公开实施例,基于代码标识符提供的目标代码的代码汇编语言和子程序代码,通过Freemaker模板引擎生成代码模板文件。将代码标识符与代码模板文件进行关联管理,满足对多种业务场景下的代码生成需求。
基于上述代码生成方法,本公开还提供了一种代码生成装置。以下将结合图5对该装置进行详细描述。
图5示意性示出了根据本公开实施例的代码生成装置的结构框图。
如图5所示,该实施例的代码生成装置500包括获取模块510、解析模块520、映射模块530、填充模块540和返回模块550。
获取模块510用于响应于前端发送的目标代码生成请求,从目标代码生成请求中获取建表语句和代码标识符。在一实施例中,获取模块510可以用于执行前文描述的操作S210,在此不再赘述。
解析模块520用于通过代码标识符映射得到代码模板文件,代码模板文件包括与多个实体类数据对应的多个标签。在一实施例中,解析模块520可以用于执行前文描述的操作S220,在此不再赘述。
映射模块530用于通过代码标识符映射得到代码模板文件,代码模板文件包括与多个实体类数据对应的多个标签。在一实施例中,映射模块530可以用于执行前文描述的操作S230,在此不再赘述。
填充模块540,用于根据多个标签,将多个实体类数据填充至代码模板文件,得到多个代码块。在一实施例中,填充模块540可以用于执行前文描述的操作S240,在此不再赘述。
返回模块550,用于根据凭证模板,生成具有目标文件格式的电子凭证。在一实施例中,返回模块550,可以用于执行前文描述的操作S250,在此不再赘述。
根据本公开的实施例,获取模块510包括启动单元、调用单元和第一解析单元,用于响应于前端发送的目标代码生成请求,启动Web服务。调用单元,用于通过Web服务,调用html页面端。第一解析单元,用于通过html页面端解析目标代码生成请求,得到建表语句和代码类型标识。
根据本公开的实施例,解析模块520包括第一确定单元、第二解析单元和第一映射单元。第一确定单元用于确定建表语句的数据库类型;第二解析单元用于根据数据库类型,通过后端接口对建表语句的数据定义语言进行解析,得到多个字段。第一映射单元用于将多个字段分别映射为都多个实体类数据。
根据本公开的实施例,映射模块530包括第一解析单元、第二确定单元、生成单元和第二映射单元。第三解析单元用于解析代码标识符,得到目标代码的代码类型和目标代码包括的多个子程序代码。第二确定单元用于根据代码类型,分别确定多个子程序代码的多个运行组件。生成单元用于通过调用多个运行组件,生成目标代码的代码结构。第二映射单元用于根据预设模板引擎,对代码结构进行映射,得到代码模板文件。
根据本公开的实施例,映射模块530还包括设置单元和第三映射单元。设置单元用于在代码结构上为多个运行组件的每个运行组件设置映射符号。映射单元用于通过预设模板引擎,对多个映射符号进行映射,得到与多个实体类数据对应的多个标签。
根据本公开的实施例,填充模块540包括获取单元、链接单元和填充单元。获取单元用于获取多个实体类数据的数据类型。链接单元用于根据数据类型,链接多个标签,以分别确定多个实体类数据的填充地址。填充单元用于根据填充地址,将多个实体类数据填充代码模板文件,得到多个代码块。
根据本公开的实施例,返回模块550包括拼接单元和修正单元。拼接单元用于通过前端对多个代码块进行拼接,得到初始目标代码。修正单元通过前端对初始目标代码进行修正,得到目标代码。
根据本公开的实施例,获取模块510、解析模块520、映射模块530、填充模块540和返回模块550中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,获取模块510、解析模块520、映射模块530、填充模块540和返回模块550中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块510、解析模块520、映射模块530、填充模块540和返回模块550中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图6示意性示出了根据本公开实施例的适于实现代码生成方法的电子设备的方框图。
如图6所示,根据本公开实施例的电子设备600包括处理器601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。处理器601例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器601还可以包括用于缓存用途的板载存储器。处理器601可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 603中,存储有电子设备600操作所需的各种程序和数据。处理器601、ROM602以及RAM 603通过总线604彼此相连。处理器601通过执行ROM 602和/或RAM 603中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除ROM602和RAM 603以外的一个或多个存储器中。处理器601也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备600还可以包括输入/输出(I/O)接口605,输入/输出(I/O)接口605也连接至总线604。电子设备600还可以包括连接至I/O接口605的以下部件中的一项或多项:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 602和/或RAM 603和/或ROM 602和RAM 603以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的代码生成方法。
在该计算机程序被处理器601执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分609被下载和安装,和/或从可拆卸介质611被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被处理器601执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (11)
1.一种代码生成方法,包括:
响应于前端发送的目标代码生成请求,从所述目标代码生成请求中获取建表语句和代码标识符;
通过后端接口解析所述建表语句,得到多个实体类数据;
通过所述代码标识符映射得到代码模板文件,所述代码模板文件包括与所述多个实体类数据对应的多个标签;
根据所述多个标签,将所述多个实体类数据填充至所述代码模板文件,得到多个代码块;以及
将所述多个代码块返回至所述前端,以对所述多个代码块进行渲染,得到所述目标代码。
2.根据权利要求1所述的代码生成方法,其中,所述响应于前端发送的目标代码生成请求,从所述请求中获取建表语句和代码类型标识,包括:
响应于前端发送的目标代码生成请求,启动Web服务;
通过所述Web服务,调用html页面端;以及
通过所述html页面端解析所述目标代码生成请求,得到所述建表语句和所述代码类型标识。
3.根据权利要求1所述的代码生成方法,其中,所述通过所述代码类型标识符映射得到代码模板文件,包括:
解析所述代码标识符,得到所述目标代码的代码类型和所述目标代码包括的多个子程序代码;
根据所述代码类型,分别确定所述多个子程序代码的多个运行组件;
通过调用所述多个运行组件,生成所述目标代码的代码结构;以及
根据预设模板引擎,对所述代码结构进行映射,得到所述代码模板文件。
4.根据权利要求3所述的代码生成方法,其中,所述通过所述代码类型标识符映射得到代码模板文件,还包括:
在所述代码结构上为所述多个运行组件的每个运行组件设置映射符号;以及
通过所述预设模板引擎,对多个所述映射符号进行映射,得到与所述多个实体类数据对应的多个标签。
5.根据权利要求1或4所述的代码生成方法,其中,所述根据所述多个标签,将所述多个实体类数据填充至所述代码模板文件,得到多个代码块,包括:
获取所述多个实体类数据的数据类型;
根据所述数据类型,链接所述多个标签,以分别确定所述多个实体类数据的填充地址;以及
根据所述填充地址,将所述多个实体类数据填充所述代码模板文件,得到多个代码块。
6.根据权利要求1所述的代码生成方法,其中,所述通过后端接口解析所述建表语句,得到多个实体类数据,包括:
确定所述建表语句的数据库类型;
根据所述数据库类型,通过所述后端接口对所述建表语句的数据定义语言进行解析,得到多个字段;以及
将所述多个字段分别映射为都多个实体类数据。
7.根据权利要求1所述的代码生成方法,其中,所述将所述多个代码块返回至所述前端,以对所述多个代码块进行渲染,得到所述目标代码,包括:
通过前端对所述多个代码块进行拼接,得到初始目标代码;以及
通过前端对所述初始目标代码进行修正,得到所述目标代码。
8.一种代码生成装置,包括:
获取模块,用于响应于前端发送的目标代码生成请求,从所述目标代码生成请求中获取建表语句和代码标识符;
解析模块,用于通过后端接口解析所述建表语句,得到多个实体类数据;
映射模块,用于通过所述代码标识符映射得到代码模板文件,所述代码模板文件包括与所述多个实体类数据对应的多个标签;
填充模块,用于根据所述多个标签,将所述多个实体类数据填充至所述代码模板文件,得到多个代码块;以及
返回模块,用于将所述多个代码块返回至所述前端,以对所述多个代码块进行渲染,得到所述目标代码。
9.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~7中任一项所述的方法。
11.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211225858.9A CN115599386A (zh) | 2022-10-09 | 2022-10-09 | 代码生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211225858.9A CN115599386A (zh) | 2022-10-09 | 2022-10-09 | 代码生成方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115599386A true CN115599386A (zh) | 2023-01-13 |
Family
ID=84846753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211225858.9A Pending CN115599386A (zh) | 2022-10-09 | 2022-10-09 | 代码生成方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115599386A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116382703A (zh) * | 2023-06-07 | 2023-07-04 | 建信金融科技有限责任公司 | 软件包生成方法、代码开发方法及装置、电子设备和介质 |
CN117149166A (zh) * | 2023-10-30 | 2023-12-01 | 江苏德高物联技术有限公司 | 电磁水表数据对接代码生成方法及装置 |
CN118502745A (zh) * | 2024-07-17 | 2024-08-16 | 金现代信息产业股份有限公司 | 基于后端代码生成的可视化编排方法、系统、介质及设备 |
-
2022
- 2022-10-09 CN CN202211225858.9A patent/CN115599386A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116382703A (zh) * | 2023-06-07 | 2023-07-04 | 建信金融科技有限责任公司 | 软件包生成方法、代码开发方法及装置、电子设备和介质 |
CN116382703B (zh) * | 2023-06-07 | 2023-08-22 | 建信金融科技有限责任公司 | 软件包生成方法、代码开发方法及装置、电子设备和介质 |
CN117149166A (zh) * | 2023-10-30 | 2023-12-01 | 江苏德高物联技术有限公司 | 电磁水表数据对接代码生成方法及装置 |
CN117149166B (zh) * | 2023-10-30 | 2023-12-29 | 江苏德高物联技术有限公司 | 电磁水表数据对接代码生成方法及装置 |
CN118502745A (zh) * | 2024-07-17 | 2024-08-16 | 金现代信息产业股份有限公司 | 基于后端代码生成的可视化编排方法、系统、介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109062563B (zh) | 用于生成页面的方法和装置 | |
CN111414350B (zh) | 一种服务生成方法及装置 | |
CN113126990B (zh) | 一种页面开发方法、装置、设备及存储介质 | |
US20130054812A1 (en) | System and method for dynamically assembling an application on a client device | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN111736840A (zh) | 小程序应用的编译方法、运行方法、存储介质及电子设备 | |
CN113535587B (zh) | 目标应用检测方法、装置及计算机设备 | |
CN113419740B (zh) | 程序数据流的分析方法、装置、电子设备及可读存储介质 | |
CN110888794B (zh) | 接口测试方法和装置 | |
US11252257B2 (en) | Dynamic rest access | |
CN113885876A (zh) | 一种参数校验方法、装置、存储介质及计算机系统 | |
CN116382703B (zh) | 软件包生成方法、代码开发方法及装置、电子设备和介质 | |
CN110717134A (zh) | 产品说明发布方法、装置、存储介质及电子设备 | |
CN116414855A (zh) | 信息处理方法及装置、电子设备和计算机可读存储介质 | |
CN113535565B (zh) | 一种接口用例生成方法、装置、设备和介质 | |
CN115794858A (zh) | 查询语句处理方法、装置、设备及存储介质 | |
CN113392024B (zh) | 存储过程的测试方法、装置、设备及介质 | |
CN117009397A (zh) | 数据查询方法、数据查询装置、电子设备和存储介质 | |
CN111539200B (zh) | 一种生成富文本的方法、装置、介质和电子设备 | |
CN111400623B (zh) | 用于搜索信息的方法和装置 | |
CN115292313A (zh) | 一种伪列实现方法、装置、电子设备及存储介质 | |
CN113392623A (zh) | 服务数据对象生成方法、生成装置、电子设备及存储介质 | |
CN112860259B (zh) | 界面处理方法、装置、电子设备、存储介质 | |
US11960560B1 (en) | Methods for analyzing recurring accessibility issues with dynamic web site behavior and devices thereof | |
CN110069514B (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 |