CN107729003A - 代码的自动生成方法、装置及电子设备 - Google Patents
代码的自动生成方法、装置及电子设备 Download PDFInfo
- Publication number
- CN107729003A CN107729003A CN201711169612.3A CN201711169612A CN107729003A CN 107729003 A CN107729003 A CN 107729003A CN 201711169612 A CN201711169612 A CN 201711169612A CN 107729003 A CN107729003 A CN 107729003A
- Authority
- CN
- China
- Prior art keywords
- code
- template
- database table
- generated
- table structure
- 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
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种代码的自动生成方法、装置及电子设备,该方法包括:接收用户发送的代码自动生成请求;根据代码自动生成请求调用代码模板库中的目标代码模板;通过数据库表结构中的数据替换目标代码模板中的el表达式,得到待生成代码文件,以得到待生成代码。本发明中的代码自动生成方法中,可以按照用户需要的模板类型确定目标代码模板,进而用数据库表结构中的数据替换目标代码模板中的el表达,便能够得到对应类型的代码,更加智能,灵活,另外,在需要生成其他类型的代码模板时,只需要对代码模板库进行扩展即可,可扩展性强,缓解了现有的代码自动生成方法中,配置繁杂,生成代码类型固定且代码生成的扩展能力差的技术问题。
Description
技术领域
本发明涉及软件工程的技术领域,尤其是涉及一种代码的自动生成方法、装置及电子设备。
背景技术
随着信息时代的蓬勃发展,各行各业对各种软件的需求量与日俱增,各种软件产品层出不穷,但是软件产品质量却良莠不齐,并且IT从业人员已经变成了当前工作压力最大的上班族群。面对庞大的软件产品需求,如何提高软件的生成效率,降低软件开发的周期与成本,成为软件开发人员乃至整个行业的关注焦点。现在技术中,可借助代码自动生成工具缩减软件产品开发过程的周期和所耗费的人力。
而现有的代码自动生成方法中,往往需要进行大量繁琐的配置才能够使用;并且,生成的代码不够智能,只能实现一种类型的代码,不能进行灵活的配置;且生成的代码质量无法得到保证,维护人员不方便进行修改。
综上,现有的代码自动生成方法中,需要进行许多配置,生成代码类型固定且代码生成的扩展能力差。
发明内容
有鉴于此,本发明的目的在于提供一种代码的自动生成方法、装置及电子设备,以缓解现有的代码自动生成方法中,配置繁杂,代码生成类型固定且代码生成的扩展能力差的技术问题。
第一方面,本发明实施例提供了一种代码的自动生成方法,所述方法包括:
接收用户发送的代码自动生成请求,其中,所述代码自动生成请求中携带至少以下信息:待生成代码的数据库表结构,生成代码的路径,所述待生成代码的模板类型;
根据所述代码自动生成请求调用代码模板库中的目标代码模板,其中,所述代码模板库包括多个预设子代码模板,所述目标代码模板与所述多个预设子代码模板相关,且所述目标代码模板与所述代码自动生成请求中携带的信息相匹配,所述目标代码模板中包含el表达式;
通过所述数据库表结构中的数据替换所述目标代码模板中的el表达式,得到待生成代码文件,以得到所述待生成代码。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,接收用户发送的代码自动生成请求包括:
接收所述用户选择的所述数据库表结构;
接收所述用户发送的对所述数据库表结构的属性信息进行配置的配置信息,得到配置后的数据库表结构;
根据所述配置后的数据库表结构生成代码生成表单;
对所述代码生成表单进行配置,得到具有代码生成信息的数据库表结构信息;
根据所述具有代码生成信息的数据库表结构信息生成所述代码自动生成请求。
结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,根据所述代码自动生成请求调用目标代码模板包括:
根据所述待生成代码的模板类型确定目标代码模板类型,其中,所述目标代码模板类型为多个代码模板类型中的一个;
根据所述目标代码模板类型将目标子代码模板进行拼装,得到所述目标代码模板,其中,所述目标子代码模板为所述多个预设子代码模板中的部分模板,所述多个预设子代码模板为多个预设的xml文件;
获取所述生成代码的路径;
根据所述生成代码的路径调用所述目标代码模板。
结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述多个代码模板类型包括:增删改查单表,增删改查一对多,持久层,树结构表,自定义代码模板类型。
结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,通过所述数据库表结构中的数据替换所述目标代码模板中的el表达式,得到待生成代码文件包括:
根据所述数据库表结构确定数据结构;
将所述目标代码模板中的el表达式替换成所述数据结构中的数据,生成所述待生成代码文件;
将所述待生成代码文件转化为所述待生成代码。
第二方面,本发明实施例还提供了一种代码的自动生成装置,所述装置包括:
接收模块,用于接收用户发送的代码自动生成请求,其中,所述代码自动生成请求中携带至少以下信息:待生成代码的数据库表结构,生成代码的路径,所述待生成代码的模板类型;
调用模块,用于根据所述代码自动生成请求调用代码模板库中的目标代码模板,其中,所述代码模板库包括多个预设子代码模板,所述目标代码模板与所述多个预设子代码模板相关,且所述目标代码模板与所述代码自动生成请求中携带的信息相匹配,所述目标代码模板中包含el表达式;
替换模块,用于通过所述数据库表结构中的数据替换所述目标代码模板中的el表达式,得到待生成代码文件,以得到所述待生成代码。
结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述接收模块包括:
第一接收单元,用于接收所述用户选择的所述数据库表结构;
第二接收单元,用于接收所述用户发送的对所述数据库表结构的属性信息进行配置的配置信息,得到配置后的数据库表结构;
第一生成单元,用于根据所述配置后的数据库表结构生成代码生成表单;
配置单元,用于对所述代码生成表单进行配置,得到具有代码生成信息的数据库表结构信息;
第二生成单元,用于根据所述具有代码生成信息的数据库表结构信息生成所述代码自动生成请求。
结合第二方面,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述调用模块包括:
确定单元,用于根据所述待生成代码的模板类型确定目标代码模板类型,其中,所述目标代码模板类型为多个代码模板类型中的一个;
拼装单元,用于根据所述目标代码模板类型将目标子代码模板进行拼装,得到所述目标代码模板,其中,所述目标子代码模板为所述多个预设子代码模板中的部分模板,所述多个预设子代码模板为多个预设的xml文件;
获取单元,用于获取所述生成代码的路径;
调用单元,用于根据所述生成代码的路径调用所述目标代码模板。
结合第二方面,本发明实施例提供了第二方面的第三种可能的实施方式,其中,所述多个代码模板类型包括:增删改查单表,增删改查一对多,持久层,树结构表,自定义代码模板类型。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面中所述的方法的步骤。
本发明实施例带来了以下有益效果:本发明实施例提供了一种代码的自动生成方法、装置及电子设备,该方法包括:接收用户发送的代码自动生成请求,其中,代码自动生成请求中携带至少以下信息:待生成代码的数据库表结构,生成代码的路径,待生成代码的模板类型;根据代码自动生成请求调用代码模板库中的目标代码模板,其中,代码模板库包括多个预设子代码模板,目标代码模板与多个预设子代码模板相关,且目标代码模板与代码自动生成请求中携带的信息相匹配,目标代码模板中包含el表达式;通过数据库表结构中的数据替换目标代码模板中的el表达式,得到待生成代码文件,以得到待生成代码。
现有的代码自动生成方法中,往往需要进行大量繁琐的配置才能够使用;并且,生成的代码不够智能,只能实现一种类型的代码,不能进行灵活的配置。与现有的代码自动生成方法相比,本发明的代码的自动生成方法中,用户只需对数据库表结构信息和生成代码的信息(如生成代码的路径,模板类型)进行配置,便能够得到代码自动生成请求,进而代码自动生成工具根据代码自动生成请求调用目标代码模板,最后,用数据库表结构中的数据替换目标代码模板中的el表达式,便能够得到待生成代码。本发明中的代码自动生成方法中,可以按照用户需要的模板类型确定目标代码模板,进而用数据库表结构中的数据替换目标代码模板中的el表达,便能够得到对应类型的代码,更加智能,灵活,另外,在需要生成其他类型的代码模板时,只需要对代码模板库进行扩展即可,可扩展性强,缓解了现有的代码自动生成方法中,配置繁杂,生成代码类型固定且代码生成的扩展能力差的技术问题。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种代码的自动生成方法的流程图;
图2为本发明实施例提供的接收用户发送的代码自动生成请求的方法流程图;
图3(a)为本发明实施例提供的用户选择数据库表结构时的示意图;
图3(b)为本发明实施例提供的对数据库表结构的属性信息进行配置时的示意图;
图3(c)为本发明实施例提供的对代码生成表单进行配置时的示意图;
图4为本发明实施例提供的根据代码自动生成请求调用目标代码模板的方法流程图;
图5(a)为本发明实施例提供的多种代码模板类型的对应示意图;
图5(b)为本发明实施例提供的生成代码方案的类图;
图5(c)为本发明实施例提供的数据库表结构和数据结构之间的关系类图;
图6为本发明实施例提供的通过数据库表结构中的数据替换目标代码模板中的el表达式,得到待生成代码文件的流程图;
图7为本发明实施例提供的代码的自动生成装置的结构示意图;
图8为本发明实施例提供的一种电子设备的示意图。
图标:
20-接收模块;21-调用模块;22-替换模块。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种代码的自动生成方法进行详细介绍。
实施例一:
一种代码的自动生成方法,参考图1,该方法包括:
S102、接收用户发送的代码自动生成请求,其中,代码自动生成请求中携带至少以下信息:待生成代码的数据库表结构,生成代码的路径,待生成代码的模板类型;
在本发明实施例中,该方法的执行主体为代码自动生成工具。用户在发送代码自动生成请求时,需要对数据库表结构信息和生成代码的信息(如生成代码的路径,模板类型)进行配置,便能够完成代码自动生成请求的发送。具体的过程将在下文中进行描述。
该方法主要用于公共代码的生成,也就是用户在进行软件编写时,可以通过该方法生成软件的公共代码部分,避免用户进行公共代码部分的重复编写工作,提供用户的工作效率。
S104、根据代码自动生成请求调用代码模板库中的目标代码模板,其中,代码模板库包括多个预设子代码模板,目标代码模板与多个预设子代码模板相关,且目标代码模板与代码自动生成请求中携带的信息相匹配,目标代码模板中包含el表达式;
代码自动生成工具在接收到代码自动生成请求后,根据代码生成请求调用代码模板库中的目标代码模板,该目标代码模板为与代码自动生成请求中携带的信息相匹配的模板,该目标代码模板与代码模板库中的多个预设子代码模板相关,能够根据用户的需求实现数据接入层,业务逻辑层,控制层后台代码以及前端html文件和js文件的代码生成。
S106、通过数据库表结构中的数据替换目标代码模板中的el表达式,得到待生成代码文件,以得到待生成代码。
在得到目标代码模板后,代码自动生成工具再用数据库表结构中的数据(即获取数据库中的字段)替换目标代码模板中的el表达式,就能够生成用户需要的待生成代码,也就是用户需要的业务部分的待生成公共代码。
现有的代码自动生成方法中,往往需要进行大量繁琐的配置才能够使用;并且,生成的代码不够智能,只能实现一种类型的代码,不能进行灵活的配置。与现有的代码自动生成方法相比,本发明的代码的自动生成方法中,用户只需对数据库表结构信息和生成代码的信息(如生成代码的路径,模板类型)进行配置,便能够得到代码自动生成请求,进而代码自动生成工具根据代码自动生成请求调用目标代码模板,最后,用数据库表结构中的数据替换目标代码模板中的el表达式,便能够得到待生成代码。本发明中的代码自动生成方法中,可以按照用户需要的模板类型确定目标代码模板,进而用数据库表结构中的数据替换目标代码模板中的el表达,便能够得到对应类型的代码,更加智能,灵活,另外,在需要生成其他类型的代码模板时,只需要对代码模板库进行扩展即可,可扩展性强,缓解了现有的代码自动生成方法中,配置繁杂,生成代码类型固定且代码生成的扩展能力差的技术问题。
上述内容从整体上介绍了代码的自动生成方法,下面对其中涉及到的内容进行具体介绍。
可选地,参考图2,接收用户发送的代码自动生成请求包括:
S201、接收用户选择的数据库表结构;
如图3(a)所示,用户在业务表添加中选择了要进行代码自动生成的数据库表结构的名称。
S202、接收用户发送的对数据库表结构的属性信息进行配置的配置信息,得到配置后的数据库表结构;
在完成数据库表结构的添加后,根据添加的数据库表结构名称对应的就会得到如图3(b)所示的数据库表结构。一般的,在完成数据库的创建后,该数据库表结构中的信息便会根据数据库自动关联得到,但是,其中的信息并不全面,还需要用户对其中的部分属性信息进行自定义配置。
下面对图3(b)中的各项进行解释说明:
表名:物理表表名;
说明:物理表表描述;
类名:生成表关联的实体类名称;
父表表名:关联父表的表名,外键:当前表关联父表的主键,如果当前表为子表,需在此指定父表及外键。外键字段需在字段列表中手动设置属性名(对象.主键,例如:将userId修改为user.id);
列名:数据表定义的字段名称;
说明:数据表定义的字段注释;
物理类型:数据表定义字段类型;
Java类型:实体对象的属性字段类型;
Java属性名称:实体对象的属性字段(对象名.属性名|属性名2|属性名3,例如:用户user.id|name|loginName,属性名2和属性名3为Join时关联查询的字段);
主键:是否是主键字段;
可空:该字段是否可为空;
插入:是否是插入字段,如果是则包含在insert语句里;
编辑:是否是编辑字段,如果是则包含在update语句里;
列表:是否是列表查询,如果是则包含在列表页的表格列里;
查询:是否是查询字段,如果是则包含在查询页的查询列表里;
查询方式:查询字段的查询方式,也就是where后的条件表达式,如:字段1=字段2AND字段3>字段4AND字段5!=字段6;
字段生成方案:表单中字段生成的样式,如:input,select,treeselect,areatext等等;
字典类型:如果字段生成方案为:下拉框、复选框、单选框,则该字段必须指定一个字典类型,字典类型为字段管理中的字典类型;
排序:字段生成的先后顺序,升序。
S203、根据配置后的数据库表结构生成代码生成表单;
对上述配置后的数据库表结构进行保存后,就能得到如图3(c)所示的代码生成表单。
S204、对代码生成表单进行配置,得到具有代码生成信息的数据库表结构信息;
对如图3(c)所示的代码生成表单进行配置,也就是填写/选择代码生成表单中的内容。用户对该代码生成表单进行配置,得到具有代码生成信息的数据库表结构信息。
下面对图3(c)中的各项进行解释说明:
方案名称:自定的方案名称,随意写即可;
模板分类:生成的代码的模板类型,目前可生成的代码的模板类型包括:增删改查单表、增删改查一对多、仅持久层(dao/entity/mapper)、树结构表(一体),另外还可以生成自定义的代码模板类型;
生成包路径:生成哪个包下;
生成模块名:生成包下的模块名称,模块名称下进行分层;
生成子模块名:分层下的文件夹,可为空;
生成功描述:生成到类注释里;
生成功能名:生成功能提示,如TAB上、列表上、提示信息等;
生成功能作者:开发者姓名;
生成选项:是否替换现有文件,提供重复生成,覆盖原有文件。
S205、根据具有代码生成信息的数据库表结构信息生成代码自动生成请求。
在得到具有代码生成信息的数据库表结构信息后,点击保存并生成代码便发送了代码自动生成请求。
可选地,参考图4,根据代码自动生成请求调用目标代码模板包括:
S401、根据待生成代码的模板类型确定目标代码模板类型,其中,目标代码模板类型为多个代码模板类型中的一个;
具体的,因为代码自动生成请求中包含有待生成代码的模板类型信息,根据该待生成代码的模板类型确定目标代码模板类型。例如:待生成代码的模板类型为增删改查单表,那么确定得到的目标代码模板类型即为增删改查单表。
具体的,多个代码模板类型包括:增删改查单表,增删改查一对多,持久层,树结构表,自定义代码模板类型。其中,增删改查单表,增删改查一对多,持久层,树结构表为用于J2EE项目中的定制代码模板类型,自定义代码模板类型是指用户可以根据自身的需求进行添加扩展。
S402、根据目标代码模板类型将目标子代码模板进行拼装,得到目标代码模板,其中,目标子代码模板为多个预设子代码模板中的部分模板,多个预设子代码模板为多个预设的xml文件;
在得到目标代码模板类型后,根据目标代码模板类型将目标子代码模板进行拼装,得到目标代码模板。具体的,参考图5(a),图5(a)中为ParentConfig文件中包含多种代码模板类型,以及每种代码模板类型下所包含的子代码模板。也就是说,当确定的目标代码模板类型为增删改查单表,对应的目标子代码模板就是图5(a)中增删改查单表下面的多个xml文件,当然还可以对其中的目标子代码模板进行扩展。
其中,每一个xml文件都是一段经过代码评审的代码模板,准确性好,可以看出,用户想要得到其它语言对应的代码时,只需要添加扩展xml文件即可,只需维护xml文件,修改方便。
S403、获取生成代码的路径;
S404、根据生成代码的路径调用目标代码模板。
图5(b)中为生成代码的类图。
可选地,参考图6,通过数据库表结构中的数据替换目标代码模板中的el表达式,得到待生成代码文件包括:
S601、根据数据库表结构确定数据结构;
参考图5(c),图5(c)为数据库表结构和数据结构之间的关系。
S602、将目标代码模板中的el表达式替换成数据结构中的数据,生成待生成代码文件;
S603、将待生成代码文件转化为待生成代码。
本发明实施例中的代码的自动生成方法具有如下优点:
1、用户的配置简单,只需要进行数据库表结构的配置和生成代码信息的配置即可,简单易用;
2、可以在代码模板库中扩展代码模板类型,并扩展子代码模板(即xml文件),扩展性强,可以生成多种语言对应的代码;
3、支持同时生成前后台代码;
4、能够根据用户需求自动生成高质量的功能业务代码,避免用户开发重复代码,提高用户工作效率;
5、代码模板(包括代码模板类型和预设子代码模板)能够在现有基础上进行横向扩充,有利于整个工具持续不断的开发和完善;
6、支持界面友好性交互操作,使用户能够快速掌握代码自动生成工具的操作;
7、能够根据数据库的连接自动将数据库表结构转换成对应的数据结构,完成对表结构的反转工作,生成对应的数据实体和代码模板;
8、本发明实施例中的方法是后台向前端开发公共代码的生成工具,可以根据需求单独生成实体,前端页面代码和后台代码,使用户能够从繁杂的事务性质代码当中抽离出来,真正关注核心业务代码。
实施例二:
一种代码的自动生成装置,参考图7,该装置包括:
接收模块20,用于接收用户发送的代码自动生成请求,其中,代码自动生成请求中携带至少以下信息:待生成代码的数据库表结构,生成代码的路径,待生成代码的模板类型;
调用模块21,用于根据代码自动生成请求调用代码模板库中的目标代码模板,其中,代码模板库包括多个预设子代码模板,目标代码模板与多个预设子代码模板相关,且目标代码模板与代码自动生成请求中携带的信息相匹配,目标代码模板中包含el表达式;
替换模块22,用于通过数据库表结构中的数据替换目标代码模板中的el表达式,得到待生成代码文件,以得到待生成代码。
本发明的代码的自动生成装置中,用户只需对数据库表结构信息和生成代码的信息(如生成代码的路径,模板类型)进行配置,便能够得到代码自动生成请求,进而代码自动生成工具根据代码自动生成请求调用目标代码模板,最后,用数据库表结构中的数据替换目标代码模板中的el表达式,便能够得到待生成代码。本发明中的代码自动生成装置中,可以按照用户需要的模板类型确定目标代码模板,进而用数据库表结构中的数据替换目标代码模板中的el表达,便能够得到对应类型的代码,更加智能,灵活,另外,在需要生成其他类型的代码模板时,只需要对代码模板库进行扩展即可,可扩展性强,缓解了现有的代码自动生成装置中,配置繁杂,生成代码类型固定且代码生成的扩展能力差的技术问题。
可选地,接收模块包括:
第一接收单元,用于接收用户选择的数据库表结构;
第二接收单元,用于接收用户发送的对数据库表结构的属性信息进行配置的配置信息,得到配置后的数据库表结构;
第一生成单元,用于根据配置后的数据库表结构生成代码生成表单;
配置单元,用于对代码生成表单进行配置,得到具有代码生成信息的数据库表结构信息;
第二生成单元,用于根据具有代码生成信息的数据库表结构信息生成代码自动生成请求。
可选地,调用模块包括:
确定单元,用于根据待生成代码的模板类型确定目标代码模板类型,其中,目标代码模板类型为多个代码模板类型中的一个;
拼装单元,用于根据目标代码模板类型将目标子代码模板进行拼装,得到目标代码模板,其中,目标子代码模板为多个预设子代码模板中的部分模板,多个预设子代码模板为多个预设的xml文件;
获取单元,用于获取生成代码的路径;
调用单元,用于根据生成代码的路径调用目标代码模板。
可选地,多个代码模板类型包括:增删改查单表,增删改查一对多,持久层,树结构表,自定义代码模板类型。
实施例三:
本发明实施例提供了一种电子设备,参考图8,该电子设备包括:处理器30,存储器31,总线32和通信接口33,处理器30、通信接口33和存储器31通过总线32连接;处理器30用于执行存储器31中存储的可执行模块,例如计算机程序。处理器执行极端及程序时实现如方法实施例中描述的方法的步骤。
其中,存储器31可能包含高速随机存取存储器(RAM,RandomAccessMemory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口33(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线32可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器31用于存储程序,处理器30在接收到执行指令后,执行程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器30中,或者由处理器30实现。
处理器30可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器30中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器30可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器31,处理器30读取存储器31中的信息,结合其硬件完成上述方法的步骤。
本发明实施例所提供的代码的自动生成方法、装置及电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种代码的自动生成方法,其特征在于,所述方法包括:
接收用户发送的代码自动生成请求,其中,所述代码自动生成请求中携带至少以下信息:待生成代码的数据库表结构,生成代码的路径,所述待生成代码的模板类型;
根据所述代码自动生成请求调用代码模板库中的目标代码模板,其中,所述代码模板库包括多个预设子代码模板,所述目标代码模板与所述多个预设子代码模板相关,且所述目标代码模板与所述代码自动生成请求中携带的信息相匹配,所述目标代码模板中包含el表达式;
通过所述数据库表结构中的数据替换所述目标代码模板中的el表达式,得到待生成代码文件,以得到所述待生成代码。
2.根据权利要求1所述的方法,其特征在于,接收用户发送的代码自动生成请求包括:
接收所述用户选择的所述数据库表结构;
接收所述用户发送的对所述数据库表结构的属性信息进行配置的配置信息,得到配置后的数据库表结构;
根据所述配置后的数据库表结构生成代码生成表单;
对所述代码生成表单进行配置,得到具有代码生成信息的数据库表结构信息;
根据所述具有代码生成信息的数据库表结构信息生成所述代码自动生成请求。
3.根据权利要求1所述的方法,其特征在于,根据所述代码自动生成请求调用目标代码模板包括:
根据所述待生成代码的模板类型确定目标代码模板类型,其中,所述目标代码模板类型为多个代码模板类型中的一个;
根据所述目标代码模板类型将目标子代码模板进行拼装,得到所述目标代码模板,其中,所述目标子代码模板为所述多个预设子代码模板中的部分模板,所述多个预设子代码模板为多个预设的xml文件;
获取所述生成代码的路径;
根据所述生成代码的路径调用所述目标代码模板。
4.根据权利要求3所述的方法,其特征在于,所述多个代码模板类型包括:增删改查单表,增删改查一对多,持久层,树结构表,自定义代码模板类型。
5.根据权利要求1所述的方法,其特征在于,通过所述数据库表结构中的数据替换所述目标代码模板中的el表达式,得到待生成代码文件包括:
根据所述数据库表结构确定数据结构;
将所述目标代码模板中的el表达式替换成所述数据结构中的数据,生成所述待生成代码文件;
将所述待生成代码文件转化为所述待生成代码。
6.一种代码的自动生成装置,其特征在于,所述装置包括:
接收模块,用于接收用户发送的代码自动生成请求,其中,所述代码自动生成请求中携带至少以下信息:待生成代码的数据库表结构,生成代码的路径,所述待生成代码的模板类型;
调用模块,用于根据所述代码自动生成请求调用代码模板库中的目标代码模板,其中,所述代码模板库包括多个预设子代码模板,所述目标代码模板与所述多个预设子代码模板相关,且所述目标代码模板与所述代码自动生成请求中携带的信息相匹配,所述目标代码模板中包含el表达式;
替换模块,用于通过所述数据库表结构中的数据替换所述目标代码模板中的el表达式,得到待生成代码文件,以得到所述待生成代码。
7.根据权利要求6所述的装置,其特征在于,所述接收模块包括:
第一接收单元,用于接收所述用户选择的所述数据库表结构;
第二接收单元,用于接收所述用户发送的对所述数据库表结构的属性信息进行配置的配置信息,得到配置后的数据库表结构;
第一生成单元,用于根据所述配置后的数据库表结构生成代码生成表单;
配置单元,用于对所述代码生成表单进行配置,得到具有代码生成信息的数据库表结构信息;
第二生成单元,用于根据所述具有代码生成信息的数据库表结构信息生成所述代码自动生成请求。
8.根据权利要求6所述的装置,其特征在于,所述调用模块包括:
确定单元,用于根据所述待生成代码的模板类型确定目标代码模板类型,其中,所述目标代码模板类型为多个代码模板类型中的一个;
拼装单元,用于根据所述目标代码模板类型将目标子代码模板进行拼装,得到所述目标代码模板,其中,所述目标子代码模板为所述多个预设子代码模板中的部分模板,所述多个预设子代码模板为多个预设的xml文件;
获取单元,用于获取所述生成代码的路径;
调用单元,用于根据所述生成代码的路径调用所述目标代码模板。
9.根据权利要求8所述的装置,其特征在于,所述多个代码模板类型包括:增删改查单表,增删改查一对多,持久层,树结构表,自定义代码模板类型。
10.一种电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711169612.3A CN107729003A (zh) | 2017-11-20 | 2017-11-20 | 代码的自动生成方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711169612.3A CN107729003A (zh) | 2017-11-20 | 2017-11-20 | 代码的自动生成方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107729003A true CN107729003A (zh) | 2018-02-23 |
Family
ID=61217936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711169612.3A Pending CN107729003A (zh) | 2017-11-20 | 2017-11-20 | 代码的自动生成方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107729003A (zh) |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108537588A (zh) * | 2018-03-30 | 2018-09-14 | 深圳市富途网络科技有限公司 | 一种通用抽奖管理系统及方法 |
CN108628750A (zh) * | 2018-05-16 | 2018-10-09 | 无线生活(杭州)信息科技有限公司 | 一种测试代码处理方法及装置 |
CN108762743A (zh) * | 2018-05-23 | 2018-11-06 | 浪潮软件集团有限公司 | 一种数据表操作代码生成方法及装置 |
CN109032582A (zh) * | 2018-07-19 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种生成服务器运维脚本的方法及装置 |
CN109325900A (zh) * | 2018-09-19 | 2019-02-12 | 北京润科通用技术有限公司 | 一种算法的部署方法和系统 |
CN109408043A (zh) * | 2018-10-19 | 2019-03-01 | 中国银行股份有限公司 | 一种程序生成方法及装置 |
CN109522012A (zh) * | 2018-10-29 | 2019-03-26 | 珠海迎迎科技有限公司 | 一种自动代码生成器及自动代码生成方法 |
CN109614095A (zh) * | 2018-12-07 | 2019-04-12 | 北京金山云网络技术有限公司 | 用户自定义组件的方法、平台代码的生成方法及装置 |
CN109857735A (zh) * | 2018-12-29 | 2019-06-07 | 上海瑞家信息技术有限公司 | 一种通过excel进行规则描述的数据构造方法及系统 |
CN109885291A (zh) * | 2019-01-25 | 2019-06-14 | 深圳市元征科技股份有限公司 | 一种代码自动生成方法及代码自动生成器 |
CN110083351A (zh) * | 2019-04-22 | 2019-08-02 | 北京百度网讯科技有限公司 | 用于生成代码的方法和装置 |
CN110147225A (zh) * | 2019-04-02 | 2019-08-20 | 平安科技(深圳)有限公司 | 一种代码生成方法、装置及计算机设备、存储介质 |
CN110399128A (zh) * | 2019-07-26 | 2019-11-01 | 北京恒华伟业科技股份有限公司 | 代码文件生成方法及装置 |
CN110472207A (zh) * | 2018-05-10 | 2019-11-19 | 北京京东尚科信息技术有限公司 | 表单生成方法和装置 |
CN110580158A (zh) * | 2019-09-12 | 2019-12-17 | 上海米哈游网络科技股份有限公司 | 一种代码生成方法、装置、存储介质及电子设备 |
CN110674625A (zh) * | 2019-08-29 | 2020-01-10 | 浙江数链科技有限公司 | 代码生成的方法、装置、计算机设备和存储介质 |
CN111221522A (zh) * | 2020-01-13 | 2020-06-02 | 大汉软件股份有限公司 | 一种面向政府集约化应用开发的前后端分离架构的自动代码生成方法 |
CN111638873A (zh) * | 2020-05-21 | 2020-09-08 | 平安普惠企业管理有限公司 | 程序代码的生成方法、装置、计算机设备及存储介质 |
CN112015429A (zh) * | 2020-08-21 | 2020-12-01 | 杭州指令集智能科技有限公司 | 一种代码生成方法、装置及设备 |
CN113434136A (zh) * | 2021-06-30 | 2021-09-24 | 平安科技(深圳)有限公司 | 代码生成方法、装置、电子设备及存储介质 |
CN113609138A (zh) * | 2021-09-30 | 2021-11-05 | 成都数联云算科技有限公司 | 一种类与数据库表的匹配方法、装置、设备及介质 |
CN113822031A (zh) * | 2020-06-18 | 2021-12-21 | 北京字节跳动网络技术有限公司 | 用于处理代码模板的方法和装置 |
CN114217783A (zh) * | 2021-11-10 | 2022-03-22 | 深圳市科脉技术股份有限公司 | 一种生成代码的方法、装置及终端设备 |
CN114579112A (zh) * | 2022-02-25 | 2022-06-03 | 北京圣博润高新技术股份有限公司 | 辅助系统开发的方法、装置、设备及存储介质 |
CN114816340A (zh) * | 2022-05-11 | 2022-07-29 | 泉州市华创信息服务有限公司 | 一种应用程序构建方法、装置及电子设备 |
CN114895880A (zh) * | 2022-04-02 | 2022-08-12 | 山东浪潮通软信息科技有限公司 | 代码生成方法、装置及计算机可读介质 |
CN116048480A (zh) * | 2023-04-04 | 2023-05-02 | 青岛普瑞盛医药科技有限公司 | 一种基于代码工具自动生成图表的方法及装置 |
CN117372182A (zh) * | 2023-11-21 | 2024-01-09 | 国任财产保险股份有限公司 | 一种基于快速开发持久层代码辅助方法的保险管理系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092589A (zh) * | 2011-11-03 | 2013-05-08 | 浙江省公众信息产业有限公司 | 一种基于ssh框架的代码自动生成方法 |
CN103412749A (zh) * | 2013-07-29 | 2013-11-27 | 福建联迪商用设备有限公司 | 一种基于关系型数据库的代码生成方法及代码生成器 |
US20160041815A1 (en) * | 2014-08-11 | 2016-02-11 | Chirag P. Bhagat | Computer Source Code Generator for Building Software Applications |
CN105824619A (zh) * | 2016-03-10 | 2016-08-03 | 四川交通职业技术学院 | 基于Spring MVC、Apache Shiro、MyBatis框架整合的代码生成器 |
CN106648690A (zh) * | 2016-12-29 | 2017-05-10 | 北京恒华伟业科技股份有限公司 | 一种代码自动生成方法及装置 |
-
2017
- 2017-11-20 CN CN201711169612.3A patent/CN107729003A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092589A (zh) * | 2011-11-03 | 2013-05-08 | 浙江省公众信息产业有限公司 | 一种基于ssh框架的代码自动生成方法 |
CN103412749A (zh) * | 2013-07-29 | 2013-11-27 | 福建联迪商用设备有限公司 | 一种基于关系型数据库的代码生成方法及代码生成器 |
US20160041815A1 (en) * | 2014-08-11 | 2016-02-11 | Chirag P. Bhagat | Computer Source Code Generator for Building Software Applications |
CN105824619A (zh) * | 2016-03-10 | 2016-08-03 | 四川交通职业技术学院 | 基于Spring MVC、Apache Shiro、MyBatis框架整合的代码生成器 |
CN106648690A (zh) * | 2016-12-29 | 2017-05-10 | 北京恒华伟业科技股份有限公司 | 一种代码自动生成方法及装置 |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108537588A (zh) * | 2018-03-30 | 2018-09-14 | 深圳市富途网络科技有限公司 | 一种通用抽奖管理系统及方法 |
CN110472207A (zh) * | 2018-05-10 | 2019-11-19 | 北京京东尚科信息技术有限公司 | 表单生成方法和装置 |
CN108628750B (zh) * | 2018-05-16 | 2021-11-05 | 无线生活(杭州)信息科技有限公司 | 一种测试代码处理方法及装置 |
CN108628750A (zh) * | 2018-05-16 | 2018-10-09 | 无线生活(杭州)信息科技有限公司 | 一种测试代码处理方法及装置 |
CN108762743A (zh) * | 2018-05-23 | 2018-11-06 | 浪潮软件集团有限公司 | 一种数据表操作代码生成方法及装置 |
CN108762743B (zh) * | 2018-05-23 | 2021-09-03 | 浪潮软件股份有限公司 | 一种数据表操作代码生成方法及装置 |
CN109032582A (zh) * | 2018-07-19 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种生成服务器运维脚本的方法及装置 |
CN109325900A (zh) * | 2018-09-19 | 2019-02-12 | 北京润科通用技术有限公司 | 一种算法的部署方法和系统 |
CN109408043A (zh) * | 2018-10-19 | 2019-03-01 | 中国银行股份有限公司 | 一种程序生成方法及装置 |
CN109522012A (zh) * | 2018-10-29 | 2019-03-26 | 珠海迎迎科技有限公司 | 一种自动代码生成器及自动代码生成方法 |
CN109614095A (zh) * | 2018-12-07 | 2019-04-12 | 北京金山云网络技术有限公司 | 用户自定义组件的方法、平台代码的生成方法及装置 |
CN109857735A (zh) * | 2018-12-29 | 2019-06-07 | 上海瑞家信息技术有限公司 | 一种通过excel进行规则描述的数据构造方法及系统 |
CN109857735B (zh) * | 2018-12-29 | 2021-05-04 | 上海瑞家信息技术有限公司 | 一种通过excel进行规则描述的数据构造方法及系统 |
CN109885291A (zh) * | 2019-01-25 | 2019-06-14 | 深圳市元征科技股份有限公司 | 一种代码自动生成方法及代码自动生成器 |
CN110147225A (zh) * | 2019-04-02 | 2019-08-20 | 平安科技(深圳)有限公司 | 一种代码生成方法、装置及计算机设备、存储介质 |
CN110083351A (zh) * | 2019-04-22 | 2019-08-02 | 北京百度网讯科技有限公司 | 用于生成代码的方法和装置 |
CN110399128A (zh) * | 2019-07-26 | 2019-11-01 | 北京恒华伟业科技股份有限公司 | 代码文件生成方法及装置 |
CN110674625A (zh) * | 2019-08-29 | 2020-01-10 | 浙江数链科技有限公司 | 代码生成的方法、装置、计算机设备和存储介质 |
CN110580158A (zh) * | 2019-09-12 | 2019-12-17 | 上海米哈游网络科技股份有限公司 | 一种代码生成方法、装置、存储介质及电子设备 |
CN111221522A (zh) * | 2020-01-13 | 2020-06-02 | 大汉软件股份有限公司 | 一种面向政府集约化应用开发的前后端分离架构的自动代码生成方法 |
CN111638873A (zh) * | 2020-05-21 | 2020-09-08 | 平安普惠企业管理有限公司 | 程序代码的生成方法、装置、计算机设备及存储介质 |
CN113822031A (zh) * | 2020-06-18 | 2021-12-21 | 北京字节跳动网络技术有限公司 | 用于处理代码模板的方法和装置 |
CN112015429A (zh) * | 2020-08-21 | 2020-12-01 | 杭州指令集智能科技有限公司 | 一种代码生成方法、装置及设备 |
CN113434136A (zh) * | 2021-06-30 | 2021-09-24 | 平安科技(深圳)有限公司 | 代码生成方法、装置、电子设备及存储介质 |
CN113434136B (zh) * | 2021-06-30 | 2024-03-05 | 平安科技(深圳)有限公司 | 代码生成方法、装置、电子设备及存储介质 |
CN113609138A (zh) * | 2021-09-30 | 2021-11-05 | 成都数联云算科技有限公司 | 一种类与数据库表的匹配方法、装置、设备及介质 |
CN113609138B (zh) * | 2021-09-30 | 2022-01-25 | 成都数联云算科技有限公司 | 一种类与数据库表的匹配方法、装置、设备及介质 |
CN114217783A (zh) * | 2021-11-10 | 2022-03-22 | 深圳市科脉技术股份有限公司 | 一种生成代码的方法、装置及终端设备 |
CN114579112B (zh) * | 2022-02-25 | 2023-10-20 | 北京圣博润高新技术股份有限公司 | 辅助系统开发的方法、装置、设备及存储介质 |
CN114579112A (zh) * | 2022-02-25 | 2022-06-03 | 北京圣博润高新技术股份有限公司 | 辅助系统开发的方法、装置、设备及存储介质 |
CN114895880A (zh) * | 2022-04-02 | 2022-08-12 | 山东浪潮通软信息科技有限公司 | 代码生成方法、装置及计算机可读介质 |
CN114816340A (zh) * | 2022-05-11 | 2022-07-29 | 泉州市华创信息服务有限公司 | 一种应用程序构建方法、装置及电子设备 |
CN116048480A (zh) * | 2023-04-04 | 2023-05-02 | 青岛普瑞盛医药科技有限公司 | 一种基于代码工具自动生成图表的方法及装置 |
CN116048480B (zh) * | 2023-04-04 | 2023-06-09 | 青岛普瑞盛医药科技有限公司 | 一种基于代码工具自动生成图表的方法及装置 |
CN117372182A (zh) * | 2023-11-21 | 2024-01-09 | 国任财产保险股份有限公司 | 一种基于快速开发持久层代码辅助方法的保险管理系统 |
CN117372182B (zh) * | 2023-11-21 | 2024-06-18 | 国任财产保险股份有限公司 | 一种基于快速开发持久层代码辅助方法的保险管理系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729003A (zh) | 代码的自动生成方法、装置及电子设备 | |
RU2536390C2 (ru) | Способ для автоматизированного создания отчетов | |
CN104732306B (zh) | 一种业务应用系统的快速开发系统及方法 | |
CN102117202B (zh) | 基于j2ee架构的代码生成装置 | |
CN112650766A (zh) | 数据库数据操作的方法、系统及服务器 | |
CN105487864A (zh) | 代码自动生成的方法和装置 | |
JP2006526209A (ja) | コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム | |
CN102508669A (zh) | 一种程序代码自动生成方法 | |
CN109597976A (zh) | 一种文档编辑方法及装置 | |
JP2009238230A (ja) | コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム | |
CN108279882B (zh) | 框架生成方法、装置、设备及计算机可读介质 | |
US9304746B2 (en) | Creating a user model using component based approach | |
CN111126019A (zh) | 基于模式定制的报表生成方法、装置和电子设备 | |
CN104267966A (zh) | 软件的程序代码的生成方法及装置 | |
CN110880070A (zh) | 资源分配方法、装置、计算机可读介质及电子设备 | |
CN111625226A (zh) | 一种基于原型的人机交互设计实现方法及系统 | |
CN110321283A (zh) | 接口测试用例生成方法、装置、计算机装置及存储介质 | |
CN104331288B (zh) | 一种配置化展现动态页面的方法及系统 | |
CN111538500A (zh) | 一种可视化修改菜单的方法和系统 | |
Radeke et al. | PIM Tool: Support for pattern-driven and model-based UI development | |
CN109343835A (zh) | 一种基于模板的快速构建业务脚手架代码工具 | |
CN104267967B (zh) | 软件的程序代码的生成方法及装置 | |
CN116774131A (zh) | 一种高自由度的电能表测试系统 | |
CN115131160A (zh) | 医保信息平台及其基于规划树配置医保政策的方法 | |
CN114706580A (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: 20180223 |