CN113760352A - 代码文件生成方法、电子设备、存储介质及程序产品 - Google Patents
代码文件生成方法、电子设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN113760352A CN113760352A CN202110746081.XA CN202110746081A CN113760352A CN 113760352 A CN113760352 A CN 113760352A CN 202110746081 A CN202110746081 A CN 202110746081A CN 113760352 A CN113760352 A CN 113760352A
- Authority
- CN
- China
- Prior art keywords
- configuration
- code
- file
- information
- data table
- 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/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种代码文件生成方法、电子设备、存储介质及程序产品,该方法包括:根据配置组信息获取对应的包括至少一个代码文件的包路径配置和文件命名配置的配置信息;根据包路径配置、文件命名配置和数据表的描述信息得到包路径和文件命名;基于包路径、文件命名、数据表的描述信息及数据字段的信息生成与配置信息对应的实例化对象;将实例化对象和代码文件对应的代码模板结合,生成对应的代码文件。本发明提供的代码文件生成方法、电子设备、存储介质及程序产品,通过对常用的操作进行配置化管理,减少了后续的选择和维护成本,实现了配置信息的有效管理,增强了代码生成的扩展性、灵活性、易用性和普适性,提高了代码生成效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种代码文件生成方法、电子设备、存储介质及程序产品。
背景技术
在项目开发中,新增业务领域或应用场景时常发生,基于新的业务领域或应用场景的代码进行增、删、改、查等操作必不可少,通常可以采用代码生成的方法生成相应业务领域或应用场景的代码。可以通过代码生成的技术手段快速生成相关代码文件,生成的代码风格类似、逻辑简单,大幅减少技术人员的工作量,同时提升了研发效率。在项目开发领域,尤其是服务端项目开发领域,代码生成技术具有很高的实用价值。
现有的代码文件生成方法,大致可以分为两类:基于IDE (IntegratedDevelopment Environment,集成开发环境)插件生成代码和基于Web站点生成代码。它们大都是依赖内置的代码模板和数据表相关信息生成固定风格的代码。现有的代码文件生成方法,在每次进行代码生成时,均需输入用于生成代码文件的各项信息,如输入各个代码文件的包路径和文件命名,带来很大不便,生成代码的效率低下。
发明内容
针对现有技术存在的问题,本发明提供一种代码文件生成方法、电子设备、存储介质及程序产品。
本发明提供一种代码文件生成方法,包括:获取配置组信息,根据所述配置组信息获取对应的配置信息;其中,所述配置信息包括至少一个代码文件的包路径配置和文件命名配置;获取数据表的描述信息和所述数据表中的数据字段的信息;根据所述包路径配置、所述文件命名配置和所述数据表的描述信息得到包路径和文件命名;基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象;将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件。
根据本发明提供的一种代码文件生成方法,所述配置信息还包括类型映射配置;所述基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象,具体包括:根据所述类型映射配置将所述数据字段进行数据类型转换;基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象;其中,所述数据字段的信息包括所述数据字段的名称及转换后的数据类型。
根据本发明提供的一种代码文件生成方法,所述将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件,具体包括:获取所述代码文件对应层级的所述代码模板的方法筛选结果;其中,所述方法筛选结果包括选中的方法及未选中的方法;将所述实例化对象和所述代码文件对应的所述代码模板结合,并针对所述选中的方法生成对应的所述代码文件。
根据本发明提供的一种代码文件生成方法,在所述将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件之前,所述方法还包括:获取代码模板选择结果,根据所述代码模板选择结果获取所述代码模板。
根据本发明提供的一种代码文件生成方法,在所述获取配置组信息之前,所述方法还包括:展示代码生成配置界面,所述代码生成配置界面包括数据定义语言信息输入子界面、配置组选择子界面、模板选择子界面及方法选择子界面中的至少一种;其中,所述数据定义语言信息输入子界面用于接收输入的数据定义语言信息,所述数据定义语言信息用于解析得到所述数据表的描述信息和所述数据表中的所述数据字段的信息;所述配置组选择子界面用于获取所述配置组信息;所述模板选择子界面用于获取所述代码模板选择结果;所述方法选择子界面用于获取不同层级的所述代码模板的所述方法筛选结果。
根据本发明提供的一种代码文件生成方法,所述数据表的描述信息包括数据表名称;所述方法还包括:在所述包路径配置和/或所述文件命名配置中,利用预设变量表示所述数据表名称;所述根据所述包路径配置、所述文件命名配置和所述数据表的描述信息得到包路径和文件命名,具体包括:判断所述包路径配置中是否包含所述预设变量,若是,则将所述包路径配置中的所述预设变量替换为所述数据表名称或替换为所述数据表名称经过预设第一格式转换后得到的字符,得到所述包路径;若否,直接将所述包路径配置作为所述包路径;判断所述文件命名配置中是否包含所述预设变量,若是,则将所述文件命名配置中的所述预设变量替换为所述数据表名称或替换为所述数据表名称经过预设第二格式转换后得到的字符,得到所述文件命名;若否,直接将所述文件命名配置作为所述文件命名。
根据本发明提供的一种代码文件生成方法,在所述生成对应的所述代码文件之后,所述方法还包括:将所述至少一个代码文件按照对应的所述包路径分别生成相应的文件夹后压缩打包,并将压缩包存储于预设路径下。
本发明还提供一种代码文件生成装置,包括:配置信息获取模块,用于:获取配置组信息,根据所述配置组信息获取对应的配置信息;其中,所述配置信息包括至少一个代码文件的包路径配置和文件命名配置;表信息获取模块,用于:获取数据表的描述信息和所述数据表中的数据字段的信息;实例化对象获取模块,用于:根据所述包路径配置、所述文件命名配置和所述数据表的描述信息得到包路径和文件命名;基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象;代码文件生成模块,用于:将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述代码文件生成方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述代码文件生成方法的步骤。
本发明还提供一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现如上述任一种所述代码文件生成方法的步骤。
本发明提供的代码文件生成方法、电子设备、存储介质及程序产品,通过获取配置组信息,根据配置组信息获取对应的包括至少一个代码文件的包路径配置和文件命名配置的配置信息,获取数据表的描述信息和数据表中的数据字段的信息,根据包路径配置、文件命名配置和数据表的描述信息得到包路径和文件命名;基于包路径、文件命名、数据表的描述信息及数据字段的信息生成与配置信息对应的实例化对象,将实例化对象和代码文件对应的代码模板结合,生成对应的代码文件,通过对常用的操作进行配置化管理,减少了后续的选择和维护成本,实现了配置信息的有效管理,增强了代码生成的扩展性、灵活性、易用性和普适性,提高了代码生成效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的代码文件生成方法的流程示意图之一;
图2是本发明提供的代码文件生成方法中的配置信息的示意图;
图3是本发明提供的代码文件生成方法中数据表的DDL示例;
图4是本发明提供的代码文件生成方法中根据DDL解析得到的表信息的示例;
图5是本发明提供的代码文件生成方法中代码模板的示意图;
图6是本发明提供的代码文件生成方法中对应代码模板方法选择的示意图;
图7是本发明提供的代码文件生成方法的流程示意图之二;
图8是本发明提供的代码文件生成方法中一种代码生成配置界面的示意图;
图9是本发明提供的代码文件生成装置的结构示意图;
图10是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1-图10描述本发明的提供的代码文件生成方法、电子设备、存储介质及程序产品。在具体实施方式的描述中,将以java 代码文件生成为例进行介绍,并不用于限定本发明提供的代码文件生成方法的保护范围。
图1是本发明提供的代码文件生成方法的流程示意图之一。如图 1所示,所述方法包括:
步骤101、获取配置组信息,根据所述配置组信息获取对应的配置信息;其中,所述配置信息包括至少一个代码文件的包路径配置和文件命名配置。
每个用户下可以创建多个配置组,为了方便后续管理和使用,每个配置组命名唯一。每个配置组对应相应的配置信息。
图2是本发明提供的代码文件生成方法中的配置信息的示意图。如图2所示,配置信息包括配置组名称以及至少一个代码文件的包路径配置和文件命名配置。在开发项目中,代码文件分为不同的层级,每个层级的代码文件对应有包路径和文件命名。在每个配置组的配置信息中,对于各个层级的代码文件进行了包路径配置和文件命名配置。包路径的是为了标识代码文件相对于【代码工程根目录】的位置。使用代码文件时,相对于【代码工程根目录】逐级创建文件夹,然后在文件夹下存放对应的代码文件。
步骤102、获取数据表的描述信息和所述数据表中的数据字段的信息。
可以通过数据表的数据定义语言(Data Definition Language,DDL) 信息解析得到表信息。具体可以依据DDL语法关键字和正则表达式得到表信息。其中,表信息包括数据表的描述信息和数据表中的数据字段的信息。数据表的描述信息可以包括数据表的名称及描述。数据字段的信息可以包括数据表所有字段的名称、类型及描述。
图3是本发明提供的代码文件生成方法中数据表的DDL示例。
图4是本发明提供的代码文件生成方法中根据DDL解析得到的表信息的示例。
步骤103、根据所述包路径配置、所述文件命名配置和所述数据表的描述信息得到包路径和文件命名;基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象。
文件命名与数据表名称关联,包路径也可以和数据表名称关联。因此,根据包路径配置、文件命名配置和数据表的描述信息可以得到包路径和文件命名。基于包路径、文件命名、数据表的描述信息及数据字段的信息生成与配置信息对应的实例化对象。实例化对象包括包路径、文件命名、数据表的描述信息及数据字段的信息。
步骤104、将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件。
图5是本发明提供的代码文件生成方法中代码模板的示意图。如图5所示,展示了Service文件对应的模板文件。Velocity是一个基于 Java的模板引擎。它允许仅仅简单的使用模板语言来引用由java代码定义的对象。它提供了一个Context容器,在Java代码里面可以往容器中存放对象,然后在Velocity模板文件中使用特定的语法获取,以此来达到条件判断、变量替换等功能。通过定义Velocity模板,为后续的代码生成提供母版。基于Velocity的能力,将用户定义的规则转化为Java对象,放入Context容器,通过配置通用的Velocity模板文件,打造一个生产源代码的工具。针对每个待生成的Java代码文件,都有一个与之对应的***模板,提供丰富的方法实现:增、删、改、主键查、条件查、条件更新、分页条件查等。对于每个层级的每一实现方法都有精细的控制。
生成代码文件可以利用模板引擎的已有能力,模板引擎生成代码文件需要两类信息,一个是模板文件,一个是容器。其中,模板文件用于定义生成文件的格式,容器用于容纳代码模板中需要使用的数据变量。得到实例化对象后,将实例化对象放入模板引擎中的容器中,并将实例化对象和代码文件对应的代码模板结合,生成对应的代码文件。由此,可分别得到项目的不同层级的代码文件。当然,有的代码文件也可以是同一层级的。如根据用户选取的配置组信息 ConfigGroup,结合数据解析模块解析到的表信息TableInfo,生成对应配置信息的Java对象,放入Velocity的Context容器中,配置信息的java对象主要包含三类信息:包路径、文件名、数据字段信息。将此对象放入Velocity的Context容器中,在模板中即可使用对应的数据变量,如${table.serviceName}即可取到对应的变量值IBusinessAccountService。再将配置信息的java对象与每个Velocity 模板结合,即可生成对应的代码文件。
本发明提供的代码文件生成方法,通过获取配置组信息,根据配置组信息获取对应的包括至少一个代码文件的包路径配置和文件命名配置的配置信息,获取数据表的描述信息和数据表中的数据字段的信息,根据包路径配置、文件命名配置和数据表的描述信息得到包路径和文件命名;基于包路径、文件命名、数据表的描述信息及数据字段的信息生成与配置信息对应的实例化对象,将实例化对象和代码文件对应的代码模板结合,生成对应的代码文件,通过对常用的操作进行配置化管理,减少了后续的选择和维护成本,实现了配置信息的有效管理,增强了代码生成的扩展性、灵活性、易用性和普适性,提高了代码生成效率。
根据本发明提供的一种代码文件生成方法,所述配置信息还包括类型映射配置;所述基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象,具体包括:根据所述类型映射配置将所述数据字段进行数据类型转换;基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象;其中,所述数据字段的信息包括所述数据字段的名称及转换后的数据类型。
如图2所示,配置信息还包括类型映射配置。数据类型的映射是为了满足不同用户对于类型映射的不同诉求。如:针对JDBC数据类型tinyint(1)则可以映射为Java的多个不同的数据类型Boolean、 Byte、Short或者Integer。进行类型映射的扩展设计,满足了用户针对类型映射的不同诉求。
在基于包路径、文件命名、数据表的描述信息及数据字段的信息生成与配置信息对应的实例化对象时,首先将数据字段根据类型映射配置进行数据类型转换,然后基于包路径、文件命名、数据表的描述信息及数据字段的信息生成与配置信息对应的实例化对象;其中,数据字段的信息包括数据字段的名称及转换后的数据类型。
如下例所示,根据配置组信息ConfigGroup中的类型映射,完成表信息中字段类型到Java数据类型的映射:
映射前:
映射后:
生成的实例化对象如下所示:
本发明提供的代码文件生成方法,通过根据类型映射配置对数据表中的数据字段进行数据类型转换后生成实例化对象,提高了数据类型映射的灵活配置,提高了扩展性。
根据本发明提供的一种代码文件生成方法,所述将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件,具体包括:获取所述代码文件对应层级的所述代码模板的方法筛选结果;其中,所述方法筛选结果包括选中的方法及未选中的方法;将所述实例化对象和所述代码文件对应的所述代码模板结合,并针对所述选中的方法生成对应的所述代码文件。
与现有技术代码模板中的方法库,不能按需选择,只能全量生成不同,本发明提供的代码文件生成方法提供了代码模板的方法选择功能,由此对于生成的代码提供更精细粒度的控制。由于同一层级的代码文件的方法相同,不同层级的代码文件的方法可以不同。因此,方法的选取可以分层配置。对于同一层级的代码文件对应的代码模板进行一次方法配置后,可以利用相应的方法配置结果生成同一层级的各个代码文件。
由于代码文件区分层级,相应地,代码文件对应的模板也相应地区分层级。在将实例化对象和代码文件对应的代码模板结合,生成对应的代码文件时,获取代码文件对应层级的代码模板的方法筛选结果;其中,方法筛选结果包括选中的方法及未选中的方法;将实例化对象和代码文件对应的代码模板结合,针对选中的方法生成对应的代码文件。
图6是本发明提供的代码文件生成方法中对应代码模板方法选择的示意图。如图6所示,Java Web项目最经典的三层划分为 Controller、Service、Dao,代码模板提供了丰富的实现接口(方法),供用户选择。但当部分接口不适宜暴露或者用户不需要,则用户可不勾选对应层级的对应方法,体现了更精准的控制粒度和更好的灵活性。
代码文件的层级划分是项目开发中约定的规范,比如Service和 Servicelmpl属于同一层级。在分层配置方法时,可以对于同一层级的代码模板中的一个进行方法配置即可。用户选择(如在交互界面中勾选)对应方法则方法对应的变量为true,未勾选则为false。方法选择信息,同样需要放入代码引擎的容器中,如放入Velocity的Context 容器,经过方法选择后,代码模板中已包含对应变量的判定,如: service.methodAdd变量为true,则代码文件中会生成对应的添加方法,若service.methodDel变量为false,则代码文件中不会生成的对应的删除方法。
方法选择信息的数据格式如下:
本发明提供的代码文件生成方法,通过获取对应层级代码模板的方法筛选结果,针对选中的方法生成对应的代码文件,进一步提高了代码文件生成的灵活性。
根据本发明提供的一种代码文件生成方法,在所述将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件之前,所述方法还包括:获取代码模板选择结果,根据所述代码模板选择结果获取所述代码模板。
对于每种代码文件,可以配置不同的代码模板。在将实例化对象和代码文件对应的代码模板结合,生成对应的代码文件之前,首先获取代码模板选择结果,根据代码模板选择结果获取代码模板,然后,将实例化对象和代码文件对应的代码模板结合,生成对应的代码文件。
本发明提供的代码文件生成方法,通过根据代码模板选择结果获取代码模板,将实例化对象和代码文件对应的代码模板结合,生成对应的代码文件,进一步提高了代码文件生成的灵活性。
根据本发明提供的一种代码文件生成方法,在所述获取配置组信息之前,所述方法还包括:展示代码生成配置界面,所述代码生成配置界面包括数据定义语言信息输入子界面、配置组选择子界面、模板选择子界面及方法选择子界面中的至少一种;其中,所述数据定义语言信息输入子界面用于接收输入的数据定义语言信息,所述数据定义语言信息用于解析得到所述数据表的描述信息和所述数据表中的所述数据字段的信息;所述配置组选择子界面用于获取所述配置组信息;所述模板选择子界面用于获取所述代码模板选择结果;所述方法选择子界面用于获取不同层级的所述代码模板的所述方法筛选结果。
可以设置代码生成配置界面,在生成代码文件之前,展示代码生成配置界面接收相应的配置结果。代码生成配置界面可以包括数据定义语言信息输入子界面、配置组选择子界面、模板选择子界面及方法选择子界面中的至少一种。其中,数据定义语言(DDL)信息输入子界面用于接收输入的数据定义语言信息,通过对输入的数据定义语言信息进行解析可以得到数据表的描述信息和数据表中的数据字段的信息;配置组选择子界面用于进行配置组的选择,根据选择结果获得配置组信息;模板选择子界面用于进行代码模板的选择,根据选择结果获得代码模板选择结果;方法选择子界面用于对于不同层级代码模板中待生成的方法进行选择,根据选择结果获取方法筛选结果。
本发明提供的代码文件生成方法,通过设置包括数据定义语言信息输入子界面、配置组选择子界面、模板选择子界面及方法选择子界面中的至少一种的代码生成配置界面,操作更加简便直观,提升了易用性。
根据本发明提供的一种代码文件生成方法,所述数据表的描述信息包括数据表名称;所述方法还包括:在所述包路径配置和/或所述文件命名配置中,利用预设变量表示所述数据表名称;所述根据所述包路径配置、所述文件命名配置和所述数据表的描述信息得到包路径和文件命名,具体包括:判断所述包路径配置中是否包含所述预设变量,若是,则将所述包路径配置中的所述预设变量替换为所述数据表名称或替换为所述数据表名称经过预设第一格式转换后得到的字符,得到所述包路径;若否,直接将所述包路径配置作为所述包路径;判断所述文件命名配置中是否包含所述预设变量,若是,则将所述文件命名配置中的所述预设变量替换为所述数据表名称或替换为所述数据表名称经过预设第二格式转换后得到的字符,得到所述文件命名;若否,直接将所述文件命名配置作为所述文件命名。
包路径配置和/或文件命名配置中,利用预设变量代替数据表名称;预设变量如可以用%s表示。除了预设变量,包路径配置和文件命名配置中还可以包括其他信息,如在文件命名配置中,可以对预设变量添加任意的前缀和后缀,实现了极高的灵活性,能够满足用户的不同命名风格和规范。
在根据包路径配置、文件命名配置和数据表的描述信息得到包路径和文件命名时,判断包路径配置中是否包含预设变量,若是,则将包路径配置中的预设变量替换为数据表名称或替换为数据表名称经过预设第一格式转换后得到的字符,得到包路径;若否,直接将包路径配置作为包路径。预设第一格式转换可以根据包路径的命名规则进行设置,如将数据表名称转换为只包括小写字母的字符串。比如,若数据表名称为business_account,则经过第一格式转换后为 businessaccount。
判断文件命名配置中是否包含预设变量,若是,则将文件命名配置中的预设变量替换为数据表名称或替换为数据表名称经过预设第二格式转换后得到的字符,得到文件名称;若否,直接将文件命名配置作为文件命名。预设第二格式转换可以根据文件命名规则进行设置,如将数据表名称根据驼峰命名规则进行转换。比如,若数据表名称为 business_account,则经过第二格式转换后为BusinessAccount。
若包路径配置中包括预设变量%s,则可以将预设变量%s替换为对数据表名称经过第一格式转换后得到的字符串businessaccount,从而得到包路径。若包路径配置中不包括预设变量%s,如图2所示,则直接以图2中的包路径配置作为包路径即可。若文件命名中包括预设变量%s,如图2所示,则可以将预设变量%s替换为对数据表名称经过第二格式转换后得到的字符串BusinessAccount,从而得到文件命名。若文件命名中不包括预设变量%s,,则直接以文件命名配置作为文件命名即可。
文件命名获取的过程如下所示:
提取表信息TableInfo中table_name:business_account,并转化为驼峰命名格式:BusinessAccount,将此信息替换配置信息中的%s 字符。
替换前格式:
替换后格式:
本发明提供的代码文件生成方法,通过在包路径配置和/或文件命名配置中,利用预设变量表示数据表名称,将预设变量替换为数据表名称或对数据表名称进行格式转换后得到的字符串,从而得到包路径和文件命名,提高了包路径和文件命名设置的灵活性。
根据本发明提供的一种代码文件生成方法,在所述生成对应的所述代码文件之后,所述方法还包括:将所述至少一个代码文件按照对应的所述包路径分别生成相应的文件夹后压缩打包,并将压缩包存储于预设路径下。
研发项目包含的代码文件生成后,将研发项目包含的代码文件压缩打包,并存储于预设路径下,以供下载使用。如利用java.util.zip 下的工具类,将所有生成的代码文件统一压缩打包为zip文件,再将 zip文件下载到用户指定的本地路径下,以供项目开发使用。
使用时,下载压缩包解压,由于代码文件是按照包路径存储的(压缩的时候已经按照配置的包路径创建好对应的文件夹了),可以直接把对应的代码文件和文件夹复制到开发的代码工程里,然后运行。
本发明提供的代码文件生成方法,通过将至少一个代码文件按照对应的包路径分别生成相应的文件夹后压缩打包,并将压缩包存储于预设路径下,提高了实用性。
图7是本发明提供的代码文件生成方法的流程示意图之二。如图 7所示,所述方法包括:
解析数据表的DDL,得到数据表的描述信息和数据字段信息。通过对类型映射、包路径及文件命名进行管理实现配置管理,通过对***模板进行管理实现模板管理,根据类型映射配置对数据字段进行数据类型转换,根据包路径配置、文件命名配置及数据表名称得到包路径和文件命名,根据模板中的方法选取获取需要生成的方法变量,基于包路径、文件命名、数据表的描述信息及数据字段的信息生成与配置信息对应的实例化对象,将实例化对象放入模板引擎中的容器中,并将实例化对象和代码文件对应的代码模板结合,生成已选方法的代码文件。将代码文件压缩打包存储入指定路径,在使用时下载,即可使用相应的代码文件。
本发明提供的代码生成方法,从实际应用场景出发,通过增加类型映射扩展点和集中化配置信息管理功能来提升***的易用性,进而提升技术人员的工作效率;改善了代码生成的扩展性、灵活性、易用性及普适性。解决了现有代码生成方法中数据类型映射固化,不能灵活配置,扩展性差,项目中生成各Java类的包路径和命名风格过于固化,普适性差,代码模板中的方法库,不能按需选取,只能全量生成,灵活性差,配置信息未有效管理,二次使用需要重复录入,十分低效,易用性差等问题。
图8是本发明提供的代码文件生成方法中一种代码生成配置界面的示意图。如图8所示,本发明提供的代码生成方法的流程如下:
1.完成配置组配置(仅首次使用需要),主要包括数据类型的映射规则、包路径的指定和生成代码文件的命名规则定义,见图2;
2.填写DDL信息;
3.选择配置组;
4.待生成方法选取;
5.执行生成并下载。
综上,本发明具有以下优点:
1.操作更加简便直观,提升了易用性;
2.可以满足不同用户对类型映射的不同诉求,具有较好的扩展性;
3.满足不同用户对项目不同层级的命名规范,体现了很好的灵活性;
4.配置信息的有效管理,轻松实现一次配置,永久使用,节省开发成本,提高生产效率。
下面对本发明提供的代码文件生成装置进行描述,下文描述的代码文件生成装置与上文描述的代码文件生成方法可相互对应参照。
图9是本发明提供的代码文件生成装置的结构示意图。如图9所示,所述装置包括配置信息获取模块10、表信息获取模块20、实例化对象获取模块30及代码文件生成模块40,其中:配置信息获取模块10用于:获取配置组信息,根据所述配置组信息获取对应的配置信息;其中,所述配置信息包括至少一个代码文件的包路径配置和文件命名配置;表信息获取模块20用于:获取数据表的描述信息和所述数据表中的数据字段的信息;实例化对象获取模块30用于:根据所述包路径配置、所述文件命名配置和所述数据表的描述信息得到包路径和文件命名;基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象;代码文件生成模块40用于:将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件。
本发明提供的代码文件生成装置,通过获取配置组信息,根据配置组信息获取对应的包括至少一个代码文件的包路径配置和文件命名配置的配置信息,获取数据表的描述信息和数据表中的数据字段的信息,根据包路径配置、文件命名配置和数据表的描述信息得到包路径和文件命名;基于包路径、文件命名、数据表的描述信息及数据字段的信息生成与配置信息对应的实例化对象,将实例化对象和代码文件对应的代码模板结合,生成对应的代码文件,通过对常用的操作进行配置化管理,减少了后续的选择和维护成本,实现了配置信息的有效管理,增强了代码生成的扩展性、灵活性、易用性和普适性,提高了代码生成效率。
根据本发明提供的一种代码文件生成装置,所述配置信息还包括类型映射配置;实例化对象获取模块30在用于基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象时,具体用于:根据所述类型映射配置将所述数据字段进行数据类型转换;基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象;其中,所述数据字段的信息包括所述数据字段的名称及转换后的数据类型。
本发明提供的代码文件生成装置,通过根据类型映射配置对数据表中的数据字段进行数据类型转换后生成实例化对象,提高了数据类型映射的灵活配置,提高了扩展性。
根据本发明提供的一种代码文件生成装置,代码文件生成模块 40在用于将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件时,具体用于:获取代码文件对应层级的所述所述代码模板的方法筛选结果;其中,所述方法筛选结果包括选中的方法及未选中的方法;将所述实例化对象和所述代码文件对应的所述代码模板结合,并针对所述选中的方法生成对应的所述代码文件。
本发明提供的代码文件生成装置,通过获取对应层级的代码模板的方法筛选结果,针对选中的方法生成对应的代码文件,进一步提高了代码文件生成的灵活性。
根据本发明提供的一种代码文件生成装置,代码文件生成模块 40在用于将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件之前,还用于:获取代码模板选择结果,根据所述代码模板选择结果获取所述代码模板。
本发明提供的代码文件生成装置,通过根据代码模板选择结果获取代码模板,将实例化对象和代码文件对应的代码模板结合,生成对应的代码文件,进一步提高了代码文件生成的灵活性。
根据本发明提供的一种代码文件生成装置,所述配置信息获取模块10在用于获取配置组信息之前,还用于:展示代码生成配置界面,所述代码生成配置界面包括数据定义语言信息输入子界面、配置组选择子界面、模板选择子界面及方法选择子界面中的至少一种;其中,所述数据定义语言信息输入子界面用于接收输入的数据定义语言信息,所述数据定义语言信息用于解析得到所述数据表的描述信息和所述数据表中的所述数据字段的信息;所述配置组选择子界面用于获取所述配置组信息;所述模板选择子界面用于获取所述代码模板选择结果;所述方法选择子界面用于获取不同层级的所述代码模板的所述方法筛选结果。
本发明提供的代码文件生成装置,通过设置包括数据定义语言信息输入子界面、配置组选择子界面、模板选择子界面及方法选择子界面中的至少一种的代码生成配置界面,操作更加简便直观,提升了易用性。
根据本发明提供的一种代码文件生成装置,所述数据表的描述信息包括数据表名称;实例化对象获取模块30还用于:在所述包路径配置和/或所述文件命名配置中,利用预设变量表示所述数据表名称;实例化对象获取模块30在用于根据所述包路径配置、所述文件命名配置和所述数据表的描述信息得到包路径和文件命名时,具体用于:判断所述包路径配置中是否包含所述预设变量,若是,则将所述包路径配置中的所述预设变量替换为所述数据表名称或替换为所述数据表名称经过预设第一格式转换后得到的字符,得到所述包路径;若否,直接将所述包路径配置作为所述包路径;判断所述文件命名配置中是否包含所述预设变量,若是,则将所述文件命名配置中的所述预设变量替换为所述数据表名称或替换为所述数据表名称经过预设第二格式转换后得到的字符,得到所述文件命名;若否,直接将所述文件命名配置作为所述文件命名。
本发明提供的代码文件生成装置,通过在包路径配置和/或文件命名配置中,利用预设变量表示数据表名称,将预设变量替换为数据表名称或对数据表名称进行格式转换后得到的字符串,从而得到包路径和文件命名,提高了包路径和文件命名设置的灵活性。
根据本发明提供的一种代码文件生成装置,代码文件生成模块 40在用于生成对应的所述代码文件之后,还用于:将所述至少一个代码文件按照对应的所述包路径分别生成相应的文件夹后压缩打包,并将压缩包存储于预设路径下。
本发明提供的代码文件生成装置,通过将至少一个代码文件按照对应的包路径分别生成相应的文件夹后压缩打包,并将压缩包存储于预设路径下,提高了实用性。
图10是本发明提供的电子设备的结构示意图,如图10所示,该电子设备可以包括:处理器(processor)1010、通信接口(Communications Interface)1020、存储器(memory)1030和通信总线1040,其中,处理器1010,通信接口1020,存储器1030通过通信总线1040完成相互间的通信。处理器1010可以调用存储器1030中的逻辑指令,以执行代码文件生成方法,该方法包括:获取配置组信息,根据所述配置组信息获取对应的配置信息;其中,所述配置信息包括至少一个代码文件的包路径配置和文件命名配置;获取数据表的描述信息和所述数据表中的数据字段的信息;根据所述包路径配置、所述文件命名配置和所述数据表的描述信息得到包路径和文件命名;基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象;将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件。
此外,上述的存储器1030中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的代码文件生成方法,该方法包括:获取配置组信息,根据所述配置组信息获取对应的配置信息;其中,所述配置信息包括至少一个代码文件的包路径配置和文件命名配置;获取数据表的描述信息和所述数据表中的数据字段的信息;根据所述包路径配置、所述文件命名配置和所述数据表的描述信息得到包路径和文件命名;基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象;将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的代码文件生成方法,该方法包括:获取配置组信息,根据所述配置组信息获取对应的配置信息;其中,所述配置信息包括至少一个代码文件的包路径配置和文件命名配置;获取数据表的描述信息和所述数据表中的数据字段的信息;根据所述包路径配置、所述文件命名配置和所述数据表的描述信息得到包路径和文件命名;基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象;将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种代码文件生成方法,其特征在于,包括:
获取配置组信息,根据所述配置组信息获取对应的配置信息;其中,所述配置信息包括至少一个代码文件的包路径配置和文件命名配置;
获取数据表的描述信息和所述数据表中的数据字段的信息;
根据所述包路径配置、所述文件命名配置和所述数据表的描述信息得到包路径和文件命名;基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象;
将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件。
2.根据权利要求1所述的代码文件生成方法,其特征在于,所述配置信息还包括类型映射配置;所述基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象,具体包括:
根据所述类型映射配置将所述数据字段进行数据类型转换;
基于所述包路径、所述文件命名、所述数据表的描述信息及所述数据字段的信息生成与所述配置信息对应的实例化对象;其中,所述数据字段的信息包括所述数据字段的名称及转换后的数据类型。
3.根据权利要求1所述的代码文件生成方法,其特征在于,所述将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件,具体包括:
获取所述代码文件对应层级的所述代码模板的方法筛选结果;其中,所述方法筛选结果包括选中的方法及未选中的方法;
将所述实例化对象和所述代码文件对应的所述代码模板结合,并针对所述选中的方法生成对应的所述代码文件。
4.根据权利要求3所述的代码文件生成方法,其特征在于,在所述将所述实例化对象和所述代码文件对应的代码模板结合,生成对应的所述代码文件之前,所述方法还包括:
获取代码模板选择结果,根据所述代码模板选择结果获取所述代码模板。
5.根据权利要求4所述的代码文件生成方法,其特征在于,在所述获取配置组信息之前,所述方法还包括:
展示代码生成配置界面,所述代码生成配置界面包括数据定义语言信息输入子界面、配置组选择子界面、模板选择子界面及方法选择子界面中的至少一种;
其中,所述数据定义语言信息输入子界面用于接收输入的数据定义语言信息,所述数据定义语言信息用于解析得到所述数据表的描述信息和所述数据表中的所述数据字段的信息;所述配置组选择子界面用于获取所述配置组信息;所述模板选择子界面用于获取所述代码模板选择结果;所述方法选择子界面用于获取不同层级的所述代码模板的所述方法筛选结果。
6.根据权利要求1所述的代码文件生成方法,其特征在于,所述数据表的描述信息包括数据表名称;所述方法还包括:在所述包路径配置和/或所述文件命名配置中,利用预设变量表示所述数据表名称;所述根据所述包路径配置、所述文件命名配置和所述数据表的描述信息得到包路径和文件命名,具体包括:
判断所述包路径配置中是否包含所述预设变量,若是,则将所述包路径配置中的所述预设变量替换为所述数据表名称或替换为所述数据表名称经过预设第一格式转换后得到的字符,得到所述包路径;若否,直接将所述包路径配置作为所述包路径;
判断所述文件命名配置中是否包含所述预设变量,若是,则将所述文件命名配置中的所述预设变量替换为所述数据表名称或替换为所述数据表名称经过预设第二格式转换后得到的字符,得到所述文件命名;若否,直接将所述文件命名配置作为所述文件命名。
7.根据权利要求1所述的代码文件生成方法,其特征在于,在所述生成对应的所述代码文件之后,所述方法还包括:
将所述至少一个代码文件按照对应的所述包路径分别生成相应的文件夹后压缩打包,并将压缩包存储于预设路径下。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述代码文件生成方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述代码文件生成方法的步骤。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现如权利要求1至7任一项所述代码文件生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110746081.XA CN113760352A (zh) | 2021-07-01 | 2021-07-01 | 代码文件生成方法、电子设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110746081.XA CN113760352A (zh) | 2021-07-01 | 2021-07-01 | 代码文件生成方法、电子设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113760352A true CN113760352A (zh) | 2021-12-07 |
Family
ID=78787530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110746081.XA Pending CN113760352A (zh) | 2021-07-01 | 2021-07-01 | 代码文件生成方法、电子设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113760352A (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050155016A1 (en) * | 2004-01-13 | 2005-07-14 | Joachim Bender | Flexible code generation |
CN102375743A (zh) * | 2011-10-20 | 2012-03-14 | 北京金和软件股份有限公司 | 一种基于模型和模板开发soa***的方法 |
CN106293664A (zh) * | 2015-05-27 | 2017-01-04 | 交通银行股份有限公司 | 代码生成方法及装置 |
CN107368346A (zh) * | 2017-07-06 | 2017-11-21 | 万惠投资管理有限公司 | 一种基于元数据和脚本引擎的代码生成方法及装置 |
CN109710236A (zh) * | 2018-12-30 | 2019-05-03 | 北京字节跳动网络技术有限公司 | 基于共享服务的业务开发和实现方法、装置、平台及介质 |
CN110032369A (zh) * | 2019-04-24 | 2019-07-19 | 成都市映潮科技股份有限公司 | 一种代码自动生成方法、装置及介质 |
CN111324343A (zh) * | 2020-02-20 | 2020-06-23 | 支付宝(杭州)信息技术有限公司 | 代码生成方法以及装置 |
CN112052038A (zh) * | 2020-09-09 | 2020-12-08 | 云账户技术(天津)有限公司 | 一种生成前端接口的方法及装置 |
WO2021052260A1 (zh) * | 2019-09-20 | 2021-03-25 | 第四范式(北京)技术有限公司 | 实现自动生成特征计算代码的方法及装置 |
CN113050946A (zh) * | 2021-04-29 | 2021-06-29 | 成都新希望金融信息有限公司 | 生成网站应用***的方法、装置、电子设备及存储介质 |
-
2021
- 2021-07-01 CN CN202110746081.XA patent/CN113760352A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050155016A1 (en) * | 2004-01-13 | 2005-07-14 | Joachim Bender | Flexible code generation |
CN102375743A (zh) * | 2011-10-20 | 2012-03-14 | 北京金和软件股份有限公司 | 一种基于模型和模板开发soa***的方法 |
CN106293664A (zh) * | 2015-05-27 | 2017-01-04 | 交通银行股份有限公司 | 代码生成方法及装置 |
CN107368346A (zh) * | 2017-07-06 | 2017-11-21 | 万惠投资管理有限公司 | 一种基于元数据和脚本引擎的代码生成方法及装置 |
CN109710236A (zh) * | 2018-12-30 | 2019-05-03 | 北京字节跳动网络技术有限公司 | 基于共享服务的业务开发和实现方法、装置、平台及介质 |
CN110032369A (zh) * | 2019-04-24 | 2019-07-19 | 成都市映潮科技股份有限公司 | 一种代码自动生成方法、装置及介质 |
WO2021052260A1 (zh) * | 2019-09-20 | 2021-03-25 | 第四范式(北京)技术有限公司 | 实现自动生成特征计算代码的方法及装置 |
CN111324343A (zh) * | 2020-02-20 | 2020-06-23 | 支付宝(杭州)信息技术有限公司 | 代码生成方法以及装置 |
CN112052038A (zh) * | 2020-09-09 | 2020-12-08 | 云账户技术(天津)有限公司 | 一种生成前端接口的方法及装置 |
CN113050946A (zh) * | 2021-04-29 | 2021-06-29 | 成都新希望金融信息有限公司 | 生成网站应用***的方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
刘于新;姚凯学;许道云;: "基于模板的.Net三层架构的代码自动生成", 计算机技术与发展, no. 08, pages 13 - 16 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108279932B (zh) | 一种移动终端动态配置用户界面方法和装置 | |
US9454619B2 (en) | Layered user interface | |
CN105511873B (zh) | 用户界面控件展示方法及装置 | |
CN111666526A (zh) | 页面生成方法、装置、设备及存储介质 | |
CN112835560A (zh) | Web多终端低代码智能软件开发平台 | |
CN105700925B (zh) | 一种app的界面实现方法和装置 | |
CN104035772A (zh) | 基于静态分析的源码多版本函数调用关系差异性标识方法 | |
CN107766042A (zh) | 一种基于csar的模型文件的可视化设计方法及装置 | |
US20160239271A1 (en) | Method and Apparatus for Enabling Agile Development of Services in Cloud Computing and Traditional Environments | |
CN110007994B (zh) | 一种软件国际化方法及*** | |
CN113760352A (zh) | 代码文件生成方法、电子设备、存储介质及程序产品 | |
CN115469849B (zh) | 一种业务处理***、方法、电子设备和存储介质 | |
Xiaohua et al. | Design and implementation of OpenDayLight manager application | |
CN109947435A (zh) | 服务器集群软件环境的部署方法及*** | |
CN111240679B (zh) | 页面开发方法及*** | |
US6351842B2 (en) | Method for producing computer-controlled services | |
CN114281539A (zh) | 一种资源配置方法、***及存储介质 | |
CN115617333A (zh) | 数据更新方法、装置、电子设备以及存储介质 | |
CN112948264A (zh) | 测试任务的执行方法及装置、***、存储介质、电子装置 | |
CN116360797B (zh) | 基于dsl的安全基线创建方法、***、设备及介质 | |
CN115081395B (zh) | 基于Kubernetes的可视化表单和YAML双向转换的方法及装置 | |
CN116185385A (zh) | 一种可视化接口管理方法、***、终端及存储介质 | |
US20230289151A1 (en) | Generation and consumption of templates based on source code examples | |
CN116540983A (zh) | 一种逻辑组态设计方法、装置及平台 | |
CN114398073A (zh) | 基于rn的应用更新方法及装置 |
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 |