代码生成方法、装置及计算机可读介质与流程

文档序号:31129832发布日期:2022-08-13 05:10阅读:57来源:国知局
代码生成方法、装置及计算机可读介质与流程

1.本发明涉及计算机技术领域,特别涉及代码生成方法、装置及计算机可读介质。


背景技术:

2.随着社会的发展,互联网的普及,从事软件开发的人员越来越多。开发人员在开发过程中往往要编写大量重复性的简单代码,最典型的就是增删改查代码,这部分代码没有逻辑可言,却使开发人员花费大量时间进行机械式编码和重复劳动,并且每个人对于这部分的写法也不统一,不利于后期统一的维护和管理。
3.目前,通过代码生成器工具能够生成基础代码,目的是为了使开发人员可以将精力集中于核心业务逻辑的开发,从而提高项目的研发效率。
4.但当前很多代码生成器存在问题比较多,最主要的就是生成的代码功能缺失,因此不但不能提高研发效率,还需要占用大量时间进行代码修改。因此,需要一种效率更高的代码生成方法。


技术实现要素:

5.本发明实施例提供了代码生成方法、装置及计算机可读介质,能够提高代码生成的效率。
6.根据本发明的一个方面,提供了代码生成方法,所述方法包括:选择目标数据库;从所述目标数据库中确定目标数据库表,其中,所述目标数据库表表示待生成代码的数据库表;确定对应于所述目标数据库表的目标代码模板;根据所述目标数据库表和所述目标代码模板生成代码。
7.可选的,所述确定对应于所述目标数据库表的目标代码模板,包括:确定所述目标数据库表的目标代码分类;从预设的至少一种代码模板中,选择对应所述目标代码分类的所述目标代码模板,其中,每种所述代码模板对应一种代码分类。
8.可选的,每种所述代码模板,通过如下方式生成:获取当前代码模板对应的基础代码模板,所述基础代码模板中包括至少一种固定格式代码;确定所述当前代码模板对应的代码分类;将所述代码分类对应的至少一种动态属性代码添加到所述基础代码模板中,生成所述当前代码模板;其中,每种所述动态属性代码对应数据库表中的一组数据。
9.可选的,根据所述目标数据库表和所述目标代码模板生成代码,包括:确定所述目标代码模板包括的目标固定格式代码和目标动态属性代码;从所述目标数据库表中提取对应所述目标固定格式代码和所述目标动态属性代码的数据并填充至所述所述目标代码模板中生成代码;接收代码生成路径并将所述代码生成至所述代码生成路径。
10.可选的,在所述根据所述目标数据库表和所述目标代码模板生成代码后,所述方法还包括:接收工程生成指令;根据所述工程生成指令,将所述代码封装至工程软件中,得到可执行工程,所述可执行工程能够运行所述代码。
11.根据本发明的另一方面,提供了代码生成装置,所述装置包括:数据库选择单元,
用于选择目标数据库;数据库表选择单元,用于从所述目标数据库中确定目标数据库表,其中,所述目标数据库表表示待生成代码的数据库表;模板确定单元,用于确定对应于所述目标数据库表的目标代码模板;处理单元,用于根据所述目标数据库表和所述目标代码模板生成代码。
12.可选的,所述模板确定单元,用于确定所述目标数据库表的目标代码分类;从预设的至少一种代码模板中,选择对应所述目标代码分类的所述目标代码模板,其中,每种所述代码模板对应一种代码分类;
13.可选的,所述装置,还包括:模板生成单元;所述模板生成单元,用于通过如下方式生成所述代码模板:获取当前代码模板对应的基础代码模板,所述基础代码模板中包括至少一种固定格式代码;确定所述当前代码模板对应的代码分类;将所述代码分类对应的至少一种动态属性代码添加到所述基础代码模板中,生成所述当前代码模板;其中,每种所述动态属性代码对应数据库表中的一组数据;所述处理单元,用于确定所述目标代码模板包括的目标固定格式代码和目标动态属性代码;从所述目标数据库表中提取对应所述目标固定格式代码和所述目标动态属性代码的数据并填充至所述所述目标代码模板中生成代码;接收代码生成路径并将所述代码生成至所述代码生成路径。
14.可选的,在所述根据所述目标数据库表和所述目标代码模板生成代码后,所述处理单元,还用于执行:接收工程生成指令;根据所述工程生成指令,将所述代码封装至工程软件中,得到可执行工程,所述可执行工程能够运行所述代码。
15.根据本发明的另一方面,提供了代码生成装置,包括:至少一个存储器和至少一个处理器;
16.所述至少一个存储器,用于存储机器可读程序;
17.所述至少一个处理器,用于调用所述机器可读程序,执行上述实施例中任一所述的方法。
18.根据本发明的另一方面,提供了计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述实施例中任一所述的方法。
19.本发明实施例提供了代码生成方法、装置及计算机可读介质。首先选择需要生成代码的目标数据库并从所述目标数据库中选择目标数据库表,确定对应于所述目标数据库表的目标代码模板,以适应目标数据库表的相应要求;根据所述目标数据库表和所述目标代码模板生成代码。本发明实施例提供的技术方案,能够根据数据库表自动适配,进行代码的自动生成,从而能够提高代码生成的效率。
附图说明
20.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1是本发明一实施例提供的一种代码生成方法的流程图;
22.图2是本发明一实施例提供的一种目标代码模板确定方法的流程图;
23.图3是本发明一实施例提供的一种代码模板生成方法的流程图;
24.图4是本发明一实施例提供的一种代码生成装置的示意图。
具体实施方式
25.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
26.随着社会的发展,互联网的普及,从事软件开发的人员越来越多。开发人员在开发过程中往往要编写大量重复性的简单代码,最典型的就是增删改查代码,这部分代码没有逻辑可言,却使开发人员花费大量时间进行机械式编码和重复劳动,并且每个人对于这部分的写法也不统一,不利于后期统一的维护和管理。目前,通过代码生成器工具能够生成基础代码,目的是为了使开发人员可以将精力集中于核心业务逻辑的开发,从而提高项目的研发效率。但当前很多代码生成器存在问题比较多,最主要的就是生成的代码功能缺失,因此不但不能提高研发效率,还需要占用大量时间进行代码修改。因此,需要一种效率更高的代码生成方法。
27.如图1所示,本发明实施例提供了一种代码生成方法,该方法可以包括以下步骤:
28.步骤110:选择目标数据库。
29.步骤120:从所述目标数据库中确定目标数据库表,其中,所述目标数据库表表示待生成代码的数据库表。
30.步骤130:确定对应于所述目标数据库表的目标代码模板。
31.步骤140:根据所述目标数据库表和所述目标代码模板生成代码。
32.首先,通过数据库配置界面配置数据库连接信息以选择目标数据库,根据数据库连接配置信息,连接目标数据库。通过数据库表信息界面,选择需要生成代码的目标数据库表。确定对应于目标数据库表的目标代码模板,目标代码模板能够适配目标数据库表,从而可以通过目标代码模板生成对应于目标数据库表的代码。
33.本发明实施例提供了代码生成方法、装置及计算机可读介质。首先选择需要生成代码的目标数据库并从所述目标数据库中选择目标数据库表,确定对应于所述目标数据库表的目标代码模板,以适应目标数据库表的相应要求;根据所述目标数据库表和所述目标代码模板生成代码。本发明实施例提供的技术方案,能够根据数据库表自动适配,进行代码的自动生成,从而能够提高代码生成的效率。
34.如图2所示,本发明实施例提供了一种目标代码模板确定方法,该方法可以包括以下步骤:
35.步骤210:确定所述目标数据库表的目标代码分类。
36.步骤220:从预设的至少一种代码模板中,选择对应所述目标代码分类的所述目标代码模板,其中,每种所述代码模板对应一种代码分类。
37.具体地,针对不同项目不同的代码风格,数据库表在创建的时候会对应一个代码分类,其保存的数据也对应该代码分类,在创建代码模板时,也需要创建对应多个代码分类的代码模板,比如controller、service、dao、entity层的代码模板。在生成代码时,根据目
标数据库表对应的目标代码分类,自动确定对应该目标代码分类的目标代码模板。
38.如图3所示,本发明实施例还提供了一种代码模板生成方法,该方法可以包括以下步骤:
39.步骤310:获取当前代码模板对应的基础代码模板,所述基础代码模板中包括至少一种固定格式代码。
40.步骤320:确定所述当前代码模板对应的代码分类。
41.步骤330:将所述代码分类对应的至少一种动态属性代码添加到所述基础代码模板中,生成所述当前代码模板;其中,每种所述动态属性代码对应数据库表中的一组数据。
42.在制作代码模板的时候,首先将作为样本的样板代码的固定格式抽出来然后把动态属性绑定到模板中。在这个流程中模板引擎是最合适的。通过使用模板引擎的语法将数据动态地解析到基础代码模板中去,然后导出为编程中对应的文件。
43.模板引擎有着丰富的绑定数据的指令集,可以根据条件动态的绑定数据到模板中去。例如,三元表达式,list迭代渲染等。
44.其次要把生成类的各种规则封装到配置类中,比如文件名,文件类型,包名,导入类名集合,继承类名集合,实现类名集合,字段集合,方法集合,注释等。
45.最后freemarker通过声明配置并获取模板对象freemarker.template,该对象的process方法可以将动态数据绑定到基础代码模板中并导出为文件,实现基于代码模板的代码生成器。
46.在本发明一实施例中,根据所述目标数据库表和所述目标代码模板生成代码,包括:确定所述目标代码模板包括的目标固定格式代码和目标动态属性代码;从所述目标数据库表中提取对应所述目标固定格式代码和所述目标动态属性代码的数据并填充至所述所述目标代码模板中生成代码;接收代码生成路径并将所述代码生成至所述代码生成路径。
47.其中,由于目标代码模板中包括目标固定格式代码和目标动态属性代码,将目标数据库表中对应的数据填充到目标代码模板中即可生成代码,通过输入代码生成路径,将生成后的代码保存到指定路径下。
48.在本发明一实施例中,在所述根据所述目标数据库表和所述目标代码模板生成代码后,所述方法还包括:接收工程生成指令;根据所述工程生成指令,将所述代码封装至工程软件中,得到可执行工程,所述可执行工程能够运行所述代码。
49.在生成代码的时候,也可也选择生成工程,比如生成完整的spring+jpa架构的maven工程,能够运行生成的代码实现相应功能,若仅生成代码则生成目标数据库表对应的代码。
50.如图4所示,本发明实施例提供了一种代码生成装置,所述装置包括:
51.数据库选择单元410,用于选择目标数据库;
52.数据库表选择单元420,用于从所述目标数据库中确定目标数据库表,其中,所述目标数据库表表示待生成代码的数据库表;
53.模板确定单元430,用于确定对应于所述目标数据库表的目标代码模板;
54.处理单元440,用于根据所述目标数据库表和所述目标代码模板生成代码。
55.在本发明实施例中,所述模板确定单元430,用于确定所述目标数据库表的目标代
码分类;从预设的至少一种代码模板中,选择对应所述目标代码分类的所述目标代码模板,其中,每种所述代码模板对应一种代码分类;
56.在本发明实施例中,所述装置还包括:模板生成单元;
57.所述模板生成单元,用于通过如下方式生成所述代码模板:获取当前代码模板对应的基础代码模板,所述基础代码模板中包括至少一种固定格式代码;确定所述当前代码模板对应的代码分类;将所述代码分类对应的至少一种动态属性代码添加到所述基础代码模板中,生成所述当前代码模板;其中,每种所述动态属性代码对应数据库表中的一组数据;
58.所述处理单元,用于确定所述目标代码模板包括的目标固定格式代码和目标动态属性代码;从所述目标数据库表中提取对应所述目标固定格式代码和所述目标动态属性代码的数据并填充至所述所述目标代码模板中生成代码;接收代码生成路径并将所述代码生成至所述代码生成路径。
59.在本发明实施例中,在所述根据所述目标数据库表和所述目标代码模板生成代码后,所述处理单元440,还用于执行:接收工程生成指令;根据所述工程生成指令,将所述代码封装至工程软件中,得到可执行工程,所述可执行工程能够运行所述代码。
60.可以理解的是,本发明实施例示意的结构并不构成对代码生成装置的具体限定。在本发明的另一些实施例中,代码生成装置可以包括比图示更多或者更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或者软件和硬件的组合来实现。
61.上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
62.本发明还提供了一种计算机可读介质,存储用于使一计算机执行如本文所述的代码生成方法的指令。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。
63.在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
64.用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。
65.此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
66.此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
67.需要说明的是,上述各流程和各系统结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需
要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
68.以上各实施例中,硬件单元可以通过机械方式或电气方式实现。例如,一个硬件单元可以包括永久性专用的电路或逻辑(如专门的处理器,fpga或asic)来完成相应操作。硬件单元还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
69.上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基于上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1