CN112596706A - 模式化代码生成方法、装置和计算机可读存储介质 - Google Patents

模式化代码生成方法、装置和计算机可读存储介质 Download PDF

Info

Publication number
CN112596706A
CN112596706A CN202011477658.3A CN202011477658A CN112596706A CN 112596706 A CN112596706 A CN 112596706A CN 202011477658 A CN202011477658 A CN 202011477658A CN 112596706 A CN112596706 A CN 112596706A
Authority
CN
China
Prior art keywords
code
information
sub
patterned
templates
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
CN202011477658.3A
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.)
Yonyou Network Technology Co Ltd
Original Assignee
Yonyou Network 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 Yonyou Network Technology Co Ltd filed Critical Yonyou Network Technology Co Ltd
Priority to CN202011477658.3A priority Critical patent/CN112596706A/zh
Publication of CN112596706A publication Critical patent/CN112596706A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

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

本申请提出了一种模式化代码生成方法及装置,方法包括:根据接收的输入信息,解析数据库物理模型文件以得到目标数据库表的元数据信息;根据元数据信息加载多个子代码模版;根据目标数据库表中一个层次的业务,将多个子代码模版中的至少一个子代码模版组合成为相应层次的层次化代码模版;根据元数据信息和多个所述层次化代码模版,生成多个模式化代码模块;根据多个模式化代码模块组合成模式化代码。本发明提出的模式化代码生成方法大大减轻了开发人员的工作量,同时使代码格式更规范统一,逻辑清晰,便于后续维护。

Description

模式化代码生成方法、装置和计算机可读存储介质
技术领域
本申请涉及软件开发领域,具体而言,涉及一种模式化代码生成方法、一种模式化代码生成装置和一种计算机可读存储介质。
背景技术
在企业信息化高度发展的今天,业务系统往往采用分层架构进行设计和开发,在业务的数据库物理模型确定之后,各个层次的代码有很强的规律性,而程序员手工书写这些代码会消耗大量的时间和人力进行重复性工作。目前现有的代码生成方法,没有采用分层架构,生成的代码逻辑不够清晰,不利于后期代码的维护和复用。
发明内容
本申请旨在至少解决现有技术或相关技术中存在的技术问题之一。
为此,本申请的第一方面提出了一种模式化代码生成方法。
本申请的第二方面提出了一种模式化代码生成装置。
本申请的第三方面提出了一种计算机可读存储介质。
有鉴于此,根据本申请的第一方面,提出了一种模式化代码生成方法,包括:根据接收的输入信息,解析数据库物理模型文件以得到目标数据库表的元数据信息;根据元数据信息加载多个子代码模版;根据目标数据库表中一个层次的业务,将多个子代码模版中的至少一个子代码模版组合成为相应层次的层次化代码模版;根据元数据信息和多个层次化代码模版,生成多个模式化代码模块;根据多个模式化代码模块组合成模式化代码。
本申请提出的模式化代码生成方法,在接收到用户输入的信息后,根据接收的输入信息解析数据库文件物理模型文件,得到目标数据库表的元数据信息,然后根据元数据信息加载多个子代码模版,其中子代码模版中包含经过开发人员预先设计的、有规律因而可重复使用的代码,也就是这部分重复的代码可以利用子代码模版生成,不需要开发人员手工输入,减少了开发人员的重复工作;而无规律因而不可重复使用的代码,在后续步骤中填充至子代码模版中,形成完整的代码。由于现在的业务系统往往采用分层架构进行设计和开发,在业务的数据库物理模型确定之后,其层次也随之确定,因此,在加载子代码模版之后,可以根据目标数据库表中一个层次的业务,将多个子代码模版中的至少一个子代码模版组合成为相应层次的层次化代码模版,并结合元数据信息和多个层次化代码模版,将模版中的各项信息进行填充,也就是前文提到中的“无规律因而不可重复使用的代码,在后续步骤中填充至子代码模版中”,填充后得到多个模式化代码模块,最后将填充生成的多个模式化代码模块组合起来,形成需要的模式化代码。上述模式化代码生成方法,将程序开发者从繁重的重复工作中解放出来,节约了大量时间和人力资源,并且同时保证了代码的规范性,使生成的代码格式更规范统一,逻辑清晰,更有利于后续维护和复用。
另外,根据本申请上述技术方案提出的模式化代码自动生成方法,还可以具有以下技术特征:
在一种可能的设计中,输入信息包括以下之一或其组合:数据库物理模型文件的位置信息;目标数据库表的名称信息;模式化代码的最外层文件夹的文件夹名称信息;模式化代码的根路径信息。
在该设计中,限定了接收到的输入信息内容,在接收到用户输入的数据库物理模型文件的位置信息、目标数据库表的名称信息、模式化代码的最外层文件夹的文件夹名称信息和模式化代码的根路径信息后,可以根据这些信息解析数据库文件物理模型文件,得到生成目标代码所需要的元数据信息,进而进行后续操作。
在一种可能的设计中,子代码模版为预设的可编辑模版。
在该设计中,将子代码模版设置为预设的可编辑模版,预设的子代码模版中包含经过开发人员预先设计的,有规律因而可重复使用的代码,将这部分有规律的代码设计成为子代码模版,之后开发的应用系统,只要需要这部分有规律的代码,都可以通过预先设计好的子代码模版自动生成,不需要开发人员手工输入,减少了开发人员的重复工作。然而,应用系统的使用场景迥异,预先设计好的子代码模版不可能适用于所有应用系统,考虑到这个问题,将子代码模版设置成可编辑的模版,用户可以根据不同使用场景,自主地个性化编辑子代码模版,进而生成与当前使用场景更匹配的模式化代码模块,组合成需要的模式化代码。并且,此后类似使用场景的模式化代码都可以根据个性化编辑过的子代码模版生成。可编辑的子代码模版满足了用户对不同场景的不同需求,从而大大增强了模式化代码生成方法在生成不同模式化代码时的通用性。
在一种可能的设计中,根据接收的输入信息,解析数据库物理模型文件以得到目标数据库表的元数据信息,具体包括:根据数据库物理模型文件的位置信息和目标数据库表的名称信息,从数据库物理模型文件中查找元数据信息;其中,元数据信息包括以下之一或其组合:字段名信息、字段类型信息和字段长度信息。
在该设计中,在接收到用户输入的信息后,根据接收到的数据库物理模型文件的位置信息,查找到数据库物理模型文件,再根据接收到的目标数据库表的名称信息,在数据库物理模型文件中找到目标数据库表,最后在找到的目标数据库表中查找字段名信息、字段类型信息和字段长度信息等信息,为后续操作步骤提供需要的信息,通过字段名信息、字段类型信息和字段长度信息三重限制,更精准的找到需要填充的元数据信息,以实现子代码模版的精准填充。
在一种可能的设计中,根据元数据信息加载多个子代码模版,具体包括:查找带有与元数据信息相对应的信息的多个子代码模版;加载多个子代码模版。
在该设计中,限定了根据元数据信息加载多个子代码模版的具体方式,首先查找带有与元数据信息相对应的信息的多个子代码模版,也就是确定元数据信息需要添加到哪些模版中,然后再自动加载找到的多个子代码模版,也就是加载生成模式化代码所需要的子代码模版。
在一种可能的设计中,根据目标数据库表中一个层次的业务,将多个子代码模版中的至少一个子代码模版组合成为相应层次的层次化代码模版,具体包括:根据目标数据库表中一个层次的业务,提取实现一个层次的业务所需的元数据信息;查找带有与提取的元数据信息相对应的信息的多个子代码模版中的至少一个子代码模版;将查找到的多个子代码模版中的至少一个子代码模版组合成为实现一个层次的业务的层次化代码模版。
在该设计中,限定了子代码模版组合成为层次化代码模版的具体方式,由于采用分层架构进行设计和开发业务系统时,在业务的数据库物理模型确定之后,其层次也随之确定,因此,可以根据目标数据库表中一个层次的业务,确定实现这个层次的业务所需要的元数据信息,并提取这些元数据信息,进而根据提取到的元数据信息,查找带有与元数据信息相对应的信息的一个多个子代码模版,也就是确定实现这个层次的业务所需要的元数据信息需要添加到哪些模版中,进而将查找到的至少一个子代码模版组合成为相应层次的层次化代码模版,也就是按照分层架构中每个层次的功能,将分散的子代码模版组合成为一个整体,使其逻辑更清晰,既方便开发人员的理解,也方便后续对子代码模版的使用。
在一种可能的设计中,根据元数据信息和多个层次化代码模版,生成多个模式化代码模块,具体包括:将元数据信息填充到多个层次化代码模版中,以得到多个模式化代码模块。
在该设计中,限定了采用分层架构设计和开发的业务系统,其代码的生成方式,即将元数据信息填充到由子代码模版组合得到的层次化代码模版中,得到可以实现目标数据库表中一个层次的业务的模式化代码模块。这种生成模式化代码模块,再把模式化代码模块组合起来的方法,取代了直接生成没有层次的完整代码的方法,可以使代码的结构与逻辑更加清晰,同时使各个模式化代码模块的耦合性降至最小,也就是实现了所要开发的业务系统中不同层次之间的解耦合。该设计生成多个独立的模式化代码模块,当后续需要维护或者修改时,只需要修改某一模块的代码的即可,而不需要修改全部代码,因此,更便于后期的维护和升级等操作。
在一种可能的设计中,在根据多个模式化代码模块组合成模式化代码之后,还包括:根据模式化代码的根路径信息,将模式化代码放到模式化代码的根路径下。
在该设计中,直接将生成的模式化代码放到需要放置的模式化代码根目录下,不需要开发人员手动部署至需要的目录下,简化了开发人员的操作。
在一种可能的设计中,解析数据库物理模型文件时,采用爪哇(注:Java地名音译)文档对象模型(Java Document Object Model,即JDOM)技术解析后缀名为可扩展标记语言(Extensible Markup Language,即XML)格式的数据库物理模型文件,以得到目标数据库表的元数据信息。
在该设计中,将数据库物理模型文件定义为XML格式,并通过JDOM技术处理XML文件,从数据库物理模型文件中得到元数据信息。由于XML具有很强的通用性,因此将数据库物理模型文件定义为XML格式,可以使任何应用程序都能读取或者写入数据,也就是无论用何种语言进行开发,都可以顺畅地解析数据库物理模型文件。JDOM是一种解析XML文件的工具包,基于树形结构,在使用设计上尽可能地隐藏原来使用XML文件过程中的复杂性,简化了处理XML文件的过程,从而使解析数据库物理模型文件的步骤更加简单,提高了代码生成效率。
在一种可能的设计中,采用福瑞马克(FreeMarker)技术进行子代码模版文件的解析和模式化代码模块的生成。
在该设计中,采用FreeMarker技术进行子代码模版的解析,并生成模式化代码,FreeMarker技术是一个模版引擎技术,可以生成特定格式的文档,具有通用性高等特点,在该设计中,利用FreeMarker技术的这一特点,基于子代码模版来生成需要的模式化代码。由于FreeMarker技术具有较高的通用性,可以生成各自文本,也就是可以生成各种格式的代码,可以适用于不同的使用场景,此外,FreeMarker技术可以从任何源载入子代码模版,如本地文件、数据库等,因此,不受子代码模版位置的限制,更便于后续子代码模版的优化。并且,FreeMarker技术具有强大的处理能力,解析子代码模版的速度很快,在子代码模版包含信息过多或者子代码模版数量过多时,可以有效保证子代码模版的解析速度和模式化代码模块的生成速度,保证不会由于子代码模版数据量过大导致程序瘫痪。
在一种可能的设计中,生成的模式化代码包含实体层(Entity)、表示层(DTO)、数据转换层(Mapper)、数据访问层(Repository)、业务逻辑层(Service)、控制层(Controller)层。
在该设计中,按照业务系统的分层架构,生成的模式化代码包含实体层(Entity)、表示层(DTO)、数据转换层(Mapper)、数据访问层(Repository)、业务逻辑层(Service)、控制层(Controller)层,使代码各层功能之间解耦,开发更灵活,同时也使代码逻辑更清晰,简化了后期优化和维护操作,同时增强了代码的可复用性和可扩展性。
根据本发明的第二方面,提出了一种模式化代码生成装置,包括:包括处理器和存储器,处理器用于在执行存储器中存储的计算机程序时实现模式化代码生成方法的步骤。
具体地,存储器可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器可在综合网关容灾设备的内部或外部。在特定实施例中,存储器是非易失性固态存储器。在特定实施例中,存储器包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。上述处理器可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
根据本发明的第三方面,提供了一种计算机可读存储介质,其上存储有程序或指令,程序或指令被处理器执行时实现如上述第一方面的任一设计的模式化代码生成方法的步骤,因而具备该模式化代码生成方法的全部有益效果,在此不再赘述。
可读存储介质可以包括能够存储或传输信息的任何介质。可读存储介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的网络被下载。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了本发明的一个实施例的模式化代码生成方法的流程示意图;
图2示出了本发明的第一方面的另一个实施例的模式化代码生成方法的流程示意图;
图3示出了本发明的第一方面的另一个实施例的模式化代码生成方法的流程示意图;
图4示出了本发明的第一方面的另一个实施例的模式化代码生成方法的流程示意图;
图5示出了本发明的第一方面的另一个实施例的模式化代码生成方法的流程示意图;
图6示出了本发明的第一方面的另一个实施例的模式化代码生成方法的流程示意图;
图7示出了本发明的第一方面的另一个实施例的模式化代码生成方法的流程示意图;
图8示出了本发明的第一方面的一个实施例的模式化代码生成装置的工作示意图;
图9示出了本发明的第一方面的另一个实施例的模式化代码生成方法的数据分析流程图;
图10示出了本发明第二方面的一个实施例的模式化代码生成装置结构示意框图。
其中,图8至图9中附图标记与部件名称之间的对应关系为:
100模式化代码生成装置,102代码生成器,104代码模版,106数据库物理模型文件,108命令行控制台,110模式化代码,模板文件112。
图10中附图标记与部件名称之间的对应关系为:
200模式化代码生成装置,202存储器,204处理器。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
本发明第一方面的实施例,提出一种模式化代码生成方法,图1示出了本发明的一个实施例的模式化代码生成方法的流程示意图。其中,该方法包括:
步骤102,根据接收的输入信息,解析数据库物理模型文件以得到目标数据库表的元数据信息;
步骤104,根据元数据信息加载多个子代码模版;
步骤106,根据目标数据库表中一个层次的业务,将多个子代码模版中的至少一个子代码模版组合成为相应层次的层次化代码模版;
步骤108,根据元数据信息和多个层次化代码模版,生成多个模式化代码模块;
步骤110,根据多个模式化代码模块组合成模式化代码。
本发明实施例提出的模式化代码生成方法,在接收到用户输入的信息后,根据接收的输入信息解析数据库文件物理模型文件,得到目标数据库表的元数据信息,然后根据元数据信息加载多个子代码模版,其中子代码模版中包含经过开发人员预先设计的,有规律因而可重复使用的代码,也就是这部分重复的代码可以利用子代码模版生成,不需要开发人员手工输入,减少了开发人员的重复工作;而无规律因而不可重复使用的代码,在后续步骤中填充至子代码模版中,形成完整的代码。由于现在的业务系统往往采用分层架构进行设计和开发,在业务的数据库物理模型确定之后,其层次也随之确定,因此,在加载子代码模版之后,可以根据目标数据库表中一个层次的业务,将多个子代码模版中的至少一个子代码模版组合成为相应层次的层次化代码模版,并结合元数据信息和多个层次化代码模版,将模版中的各项信息进行填充,也就是前文提到中的“无规律因而不可重复使用的代码,在后续步骤中填充至子代码模版中”,填充后得到多个模式化代码模块,最后将填充生成的多个模式化代码模块组合起来,形成需要的模式化代码。上述模式化代码生成方法,将程序开发者从繁重的重复工作中解放出来,节约了大量时间和人力资源,并且同时保证了代码的规范性,使生成的代码格式更规范统一,逻辑清晰,更有利于后续维护和复用。
在一些实施例中,输入信息包括以下之一或其组合:数据库物理模型文件的位置信息;目标数据库表的名称信息;模式化代码的最外层文件夹的文件夹名称信息;模式化代码的根路径信息。
在该实施例中,限定了接收到的输入信息内容,在接收到用户输入的数据库物理模型文件的位置信息、目标数据库表的名称信息、模式化代码的最外层文件夹的文件夹名称信息和模式化代码的根路径信息后,可以根据这些信息解析数据库文件物理模型文件,得到生成目标代码所需要的元数据信息,进而进行后续操作。
在一些实施例中,子代码模版为预设的可编辑模版。图2示出了本发明的该实施例的个性化编辑子代码模版的模式化代码生成方法的流程示意图。其中,该方法包括:
步骤202,接收用户编辑的子代码模版;
步骤204,根据接收的输入信息,解析数据库物理模型文件以得到目标数据库表的元数据信息;
步骤206,根据元数据信息加载多个子代码模版;
步骤208,根据目标数据库表中一个层次的业务,将多个子代码模版中的至少一个子代码模版组合成为相应层次的层次化代码模版;
步骤210,根据元数据信息和多个层次化代码模版,生成多个模式化代码模块;
步骤212,根据多个模式化代码模块组合成模式化代码。
在该实施例中,将子代码模版设置为预设的可编辑模版,预设的子代码模版中包含经过开发人员预先设计的,有规律因而可重复使用的代码,将这部分有规律的代码设计成为子代码模版,之后开发的应用系统,只要需要这部分有规律的代码,都可以通过预先设计好的子代码模版自动生成,不需要开发人员手工输入,减少了开发人员的重复工作。然而,应用系统的使用场景迥异,预先设计好的子代码模版不可能适用于所有应用系统,考虑到这个问题,将子代码模版设置成可编辑的模版,用户可以根据不同使用场景,自主地个性化编辑子代码模版,进而生成与当前使用场景更匹配的模式化代码模块,组合成需要的模式化代码。并且,此后类似使用场景的模式化代码都可以根据个性化编辑过的子代码模版生成。可编辑的子代码模版满足了用户对不同场景的不同需求,从而大大增强了模式化代码生成方法在生成不同模式化代码时的通用性。
图3示出了本发明的第一方面的另一个实施例的模式化代码生成方法的流程示意图。其中,该方法包括:
步骤302,根据数据库物理模型文件的位置信息和目标数据库表的名称信息,从数据库物理模型文件中查找元数据信息;
步骤304,根据元数据信息加载多个子代码模版;
步骤306,根据目标数据库表中一个层次的业务,将多个子代码模版中的至少一个子代码模版组合成为相应层次的层次化代码模版;
步骤308,根据元数据信息和多个层次化代码模版,生成多个模式化代码模块;
步骤310,根据多个模式化代码模块组合成模式化代码。
在该实施例中,在接收到用户输入的信息后,根据接收到的数据库物理模型文件的位置信息,查找到数据库物理模型文件,再根据接收到的目标数据库表的名称信息,在数据库物理模型文件中找到目标数据库表,最后在找到的目标数据库表中查找字段名信息、字段类型信息和字段长度信息等信息,为后续操作步骤提供需要的信息,通过字段名信息、字段类型信息和字段长度信息三重限制,更精准的找到需要填充的元数据信息,以实现子代码模版的精准填充。
图4示出了本发明的第一方面的另一个实施例的模式化代码生成方法的流程示意图。其中,该方法包括:
步骤402,根据接收的输入信息,解析数据库物理模型文件以得到目标数据库表的元数据信息;
步骤404,查找带有与元数据信息相对应的信息的多个子代码模版;
步骤406,加载多个子代码模版;
步骤408,根据目标数据库表中一个层次的业务,将多个子代码模版中的至少一个子代码模版组合成为相应层次的层次化代码模版;
步骤410,根据元数据信息和多个层次化代码模版,生成多个模式化代码模块;
步骤412,根据多个模式化代码模块组合成模式化代码。
在该实施例中,限定了根据元数据信息加载多个子代码模版的具体方式,首先查找带有与元数据信息相对应的信息的多个子代码模版,也就是确定元数据信息需要添加到哪些模版中,然后再自动加载找到的多个子代码模版,也就是加载生成模式化代码所需要的子代码模版。
图5示出了本发明的第一方面的另一个实施例的模式化代码生成方法的流程示意图。其中,该方法包括:
步骤502,根据接收的输入信息,解析数据库物理模型文件以得到目标数据库表的元数据信息;
步骤504,根据元数据信息加载多个子代码模版;
步骤506,根据目标数据库表中一个层次的业务,提取实现一个层次的业务所需的元数据信息;
步骤508,查找带有与提取的元数据信息相对应的信息的多个子代码模版中的至少一个子代码模版;
步骤510,将查找到的多个子代码模版中的至少一个子代码模版组合成为实现一个层次的业务的层次化代码模版;
步骤512,根据元数据信息和多个层次化代码模版,生成多个模式化代码模块;
步骤514,根据多个模式化代码模块组合成模式化代码。
在该实施例中,限定了子代码模版组合成为层次化代码模版的具体方式,由于采用分层架构进行设计和开发业务系统时,在业务的数据库物理模型确定之后,其层次也随之确定,因此,可以根据目标数据库表中一个层次的业务,确定实现这个层次的业务所需要的元数据信息,并提取这些元数据信息,进而根据提取到的元数据信息,查找带有与元数据信息相对应的信息的一个多个子代码模版,也就是确定实现这个层次的业务所需要的元数据信息需要添加到哪些模版中,进而将查找到的至少一个子代码模版组合成为相应层次的层次化代码模版,也就是按照分层架构中每个层次的功能,将分散的子代码模版组合成为一个整体,使其逻辑更清晰,既方便开发人员的理解,也方便后续对子代码模版的使用。
图6示出了本发明的另一个实施例的模式化代码生成方法的流程示意图。其中,该方法包括:
步骤602,根据接收的输入信息,解析数据库物理模型文件以得到目标数据库表的元数据信息;
步骤604,根据元数据信息加载多个子代码模版;
步骤606,根据目标数据库表中一个层次的业务,将多个子代码模版中的至少一个子代码模版组合成为相应层次的层次化代码模版;
步骤608,将元数据信息填充到多个层次化代码模版中,以得到多个模式化代码模块;
步骤610,根据多个模式化代码模块组合成模式化代码。
在该实施例中,限定了采用分层架构设计和开发的业务系统,其代码的生成方式,即将元数据信息填充到由子代码模版组合得到的层次化代码模版中,得到可以实现目标数据库表中一个层次的业务的模式化代码模块。这种生成模式化代码模块,再把模式化代码模块组合起来的方法,取代了直接生成没有层次的完整代码的方法,可以使代码的结构与逻辑更加清晰,同时使各个模式化代码模块的耦合性降至最小,也就是实现了所要开发的业务系统中不同层次之间的解耦合。该设计生成多个独立的模式化代码模块,当后续需要维护或者修改时,只需要修改某一模块的代码的即可,而不需要修改全部代码,因此,更便于后期的维护和升级等操作。
图7示出了本发明的另一个实施例的模式化代码生成方法的流程示意图。其中,该方法包括:
步骤702,根据接收的输入信息,解析数据库物理模型文件以得到目标数据库表的元数据信息;
步骤704,根据元数据信息加载多个子代码模版;
步骤706,根据目标数据库表中一个层次的业务,将多个子代码模版中的至少一个子代码模版组合成为相应层次的层次化代码模版;
步骤708,将元数据信息填充到多个层次化代码模版中,以得到多个模式化代码模块;
步骤710,根据多个模式化代码模块组合成模式化代码;
步骤712,根据模式化代码的根路径信息,将模式化代码放到模式化代码的根路径下。
在该实施例中,直接将生成的模式化代码放到需要放置的模式化代码根目录下,不需要开发人员手动部署至需要的目录下,简化了开发人员的操作。
在一些实施例中,解析数据库物理模型文件时,采用爪哇(注:Java地名音译)文档对象模型(Java Document Object Model,即JDOM)技术解析后缀名为可扩展标记语言(Extensible Markup Language,即XML)格式的数据库物理模型文件,以得到目标数据库表的元数据信息。
在该实施例中,将数据库物理模型文件定义为XML格式,并通过JDOM技术处理XML文件,从数据库物理模型文件中得到元数据信息。由于XML具有很强的通用性,因此将数据库物理模型文件定义为XML格式,可以使任何应用程序都能读取或者写入数据,也就是无论用何种语言进行开发,都可以顺畅地解析数据库物理模型文件。JDOM是一种解析XML文件的工具包,基于树形结构,在使用设计上尽可能地隐藏原来使用XML文件过程中的复杂性,简化了处理XML文件的过程,从而使解析数据库物理模型文件的步骤更加简单,提高了代码生成效率。
在一些实施例中,采用福瑞马克(FreeMarker)技术进行子代码模版文件的解析和模式化代码模块的生成。
在该实施例中,采用FreeMarker技术进行子代码模版的解析,并生成模式化代码,FreeMarker技术是一个模版引擎技术,可以生成特定格式的文档,具有通用性高等特点,在该设计中,利用FreeMarker技术的这一特点,基于子代码模版来生成需要的模式化代码。由于FreeMarker技术具有较高的通用性,可以生成各自文本,也就是可以生成各种格式的代码,可以适用于不同的使用场景,此外,FreeMarker技术可以从任何源载入子代码模版,如本地文件、数据库等,因此,不受子代码模版位置的限制,更便于后续子代码模版的优化。并且,FreeMarker技术具有强大的处理能力,解析子代码模版的速度很快,在子代码模版包含信息过多或者子代码模版数量过多时,可以有效保证子代码模版的解析速度和模式化代码模块的生成速度,保证不会由于子代码模版数据量过大导致程序瘫痪。
在一些实施例中,生成的模式化代码包含实体层(Entity)、表示层(DTO)、数据转换层(Mapper)、数据访问层(Repository)、业务逻辑层(Service)、控制层(Controller)层。
在该实施例中,按照业务系统的分层架构,生成的模式化代码包含实体层(Entity)、表示层(DTO)、数据转换层(Mapper)、数据访问层(Repository)、业务逻辑层(Service)、控制层(Controller)层,使代码各层功能之间解耦,开发更灵活,同时也使代码逻辑更清晰,简化了后期优化和维护操作,同时增强了代码的可复用性和可扩展性。
图8示出了本发明的一个实施例的模式化代码生成装置100的工作示意图。其中,该装置包括:
代码生成器102,用于生成模式化代码;
代码模版104,是子代码模版的集合。
本发明提出的模式化代码生成方法所对应的装置100,使用数据库物理模型文件106做数据源,命令行控制台108接收用户输入的信息;代码生成器102跟据命令行控制台108接收的输入信息,解析数据库物理模型文件106,从数据库物理模型文件106中获取目标数据库表的元数据信息,并根据获取的目标数据库表的元数据信息在代码模版104中查找需要的多个子代码模版,加载查找到的多个子代码模版,在加载子代码模版之后,可以根据目标数据库表中一个层次的业务,将多个子代码模版中的至少一个子代码模版组合成为相应层次的层次化代码模版,并解析代码模版104,也就是解析子代码模版的集合,得到子代码模版中的信息,结合元数据信息和多个层次化代码模版,在代码生成器102中将多个层次化代码模版中的各项信息进行填充,填充后得到多个模式化代码模块,最后将填充生成的多个模式化代码模块组合起来,形成需要的模式化代码110。上述模式化代码生成方法所对应的装置100,将程序开发者从繁重的重复工作中解放出来,节约了大量时间和人力资源,并且同时保证了代码的规范性,使生成的代码格式更规范统一,逻辑清晰,更有利于后续维护和复用。
进一步地,模式化代码生成方法所对应的装置100双击即可运行,可跨平台,无须部署。
进一步地,模式化代码生成方法所对应的装置100可在容器中运行,也可脱离容器独立运行。
图9示出了本发明的另一个实施例的模式化代码生成方法的数据分析流程图。用户首先在命令行控制台108根据提示,录入目标数据库表名称等信息,模式化代码生成方法所对应的装置100根据用户指定的信息,从数据库物理模型文件106中获取目标数据库表的元数据信息,在代码生成器102中加载模版文件112并对模版文件112进行解析,将模版文件112中的各项信息进行填充并生成目标文件,最终生成模式化代码110,直接按照用户指定的模式化代码根路径放到对应的路径下,其中本实施例中的模版文件112即为上文所述代码模版104中的所有文件。
如图10所示,本发明第二方面的实施例提供了一种模式化代码生成装置200,包括:存储器202,配置为存储可执行指令;处理器204,用于执行存储器中存储的计算机程序时实现如上述第一方面的任一实施例的模式化代码生成方法的步骤的模式化代码生成方法的步骤,因而具备该模式化代码生成方法的全部技术效果,在此不再赘述。
具体地,存储器202可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器202可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器202可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器202可在综合网关容灾设备的内部或外部。在特定实施例中,存储器202是非易失性固态存储器。在特定实施例中,存储器202包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。上述处理器204可以包括中央处理器(CPU),或者特定集成电路(Application Specific IntegratedCircuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
本发明第三方面的实施例提供了一种计算机可读存储介质,其上存储有程序,程序被处理器执行时实现如上述第一方面的任一实施例的模式化代码生成方法的步骤,因而具备该模式化代码生成方法的全部有益效果,在此不再赘述。
可读存储介质可以包括能够存储或传输信息的任何介质。可读存储介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的网络被下载。
在本说明书的描述中,术语“一个实施例”、“一些实施例”、“具体实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或实例。而且,描述的具体特征、结构、材料或特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种模式化代码生成方法,其特征在于,包括:
根据接收的输入信息,解析数据库物理模型文件以得到目标数据库表的元数据信息;
根据所述元数据信息加载多个子代码模版;
根据所述目标数据库表中一个层次的业务,将所述多个子代码模版中的至少一个子代码模版组合成为相应层次的层次化代码模版;
根据所述元数据信息和多个所述层次化代码模版,生成多个模式化代码模块;
根据所述多个模式化代码模块组合成所述模式化代码。
2.根据权利要求1所述的模式化代码生成方法,其特征在于,所述输入信息,包括以下之一或其组合:
所述数据库物理模型文件的位置信息;
所述目标数据库表的名称信息;
所述模式化代码的最外层文件夹的文件夹名称信息;
所述模式化代码的根路径信息。
3.根据权利要求1所述的模式化代码生成方法,其特征在于,
所述子代码模版为预设的可编辑模版。
4.根据权利要求2所述的模式化代码生成方法,其特征在于,所述根据接收的输入信息,解析数据库物理模型文件以得到目标数据库表的元数据信息,具体包括:
根据所述数据库物理模型文件的位置信息和所述目标数据库表的名称信息,从所述数据库物理模型文件中查找元数据信息;
其中,所述元数据信息包括以下之一或其组合:字段名信息、字段类型信息和字段长度信息。
5.根据权利要求1所述的模式化代码生成方法,其特征在于,所述根据所述元数据信息加载多个子代码模版,具体包括:
查找带有与所述元数据信息相对应的信息的多个子代码模版;
加载所述多个子代码模版。
6.根据权利要求1所述的模式化代码生成方法,其特征在于,所述根据所述目标数据库表中一个层次的业务,将所述多个子代码模版中的至少一个子代码模版组合成为相应层次的层次化代码模版,具体包括:
根据所述目标数据库表中一个层次的业务,提取实现所述一个层次的业务所需的元数据信息;
查找带有与提取的所述元数据信息相对应的信息的所述多个子代码模版中的至少一个子代码模版;
将查找到的所述多个子代码模版中的至少一个子代码模版组合成为实现所述一个层次的业务的层次化代码模版。
7.根据权利要求1所述的模式化代码生成方法,其特征在于,所述根据所述元数据信息和多个所述层次化代码模版,生成多个模式化代码模块,具体包括:
将所述元数据信息填充到多个所述层次化代码模版中,以得到所述多个模式化代码模块。
8.根据权利要求2所述的模式化代码生成方法,其特征在于,在所述根据所述多个模式化代码模块组合成所述模式化代码之后,还包括:
根据所述模式化代码的根路径信息,将所述模式化代码放到所述模式化代码的根路径下。
9.一种模式化代码生成装置,其特征在于,所述装置包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序时实现如权利要求1至8中任一项所述的模式化代码生成方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:
所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的模式化代码生成方法的步骤。
CN202011477658.3A 2020-12-15 2020-12-15 模式化代码生成方法、装置和计算机可读存储介质 Pending CN112596706A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011477658.3A CN112596706A (zh) 2020-12-15 2020-12-15 模式化代码生成方法、装置和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011477658.3A CN112596706A (zh) 2020-12-15 2020-12-15 模式化代码生成方法、装置和计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN112596706A true CN112596706A (zh) 2021-04-02

Family

ID=75195667

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011477658.3A Pending CN112596706A (zh) 2020-12-15 2020-12-15 模式化代码生成方法、装置和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN112596706A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113515278A (zh) * 2021-06-16 2021-10-19 深圳奥哲网络科技有限公司 低代码模型处理方法、系统、电子设备及存储介质
CN114564176A (zh) * 2022-01-27 2022-05-31 阿里云计算有限公司 一种代码开发方法、服务器及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040015834A1 (en) * 2000-12-20 2004-01-22 Lionel Mestre Method and apparatus for generating serialization code for representing a model in different type systems
CN101114226A (zh) * 2007-08-28 2008-01-30 北京中企开源信息技术有限公司 一种基于模型组件的代码自动生成装置、系统及方法
CN109032662A (zh) * 2018-06-19 2018-12-18 上海陆家嘴国际金融资产交易市场股份有限公司 代码文件生成方法、装置、计算机设备和存储介质
CN110851129A (zh) * 2019-11-13 2020-02-28 深圳市泰洲科技有限公司 数据管理类的软件系统代码自动生成方法
CN110955410A (zh) * 2019-10-23 2020-04-03 山东中创软件工程股份有限公司 一种代码自动生成方法、装置、设备及介质
CN111966340A (zh) * 2020-08-20 2020-11-20 杭州安恒信息技术股份有限公司 一种基于Mybatis框架的代码生成方法、装置、设备及介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040015834A1 (en) * 2000-12-20 2004-01-22 Lionel Mestre Method and apparatus for generating serialization code for representing a model in different type systems
CN101114226A (zh) * 2007-08-28 2008-01-30 北京中企开源信息技术有限公司 一种基于模型组件的代码自动生成装置、系统及方法
CN109032662A (zh) * 2018-06-19 2018-12-18 上海陆家嘴国际金融资产交易市场股份有限公司 代码文件生成方法、装置、计算机设备和存储介质
CN110955410A (zh) * 2019-10-23 2020-04-03 山东中创软件工程股份有限公司 一种代码自动生成方法、装置、设备及介质
CN110851129A (zh) * 2019-11-13 2020-02-28 深圳市泰洲科技有限公司 数据管理类的软件系统代码自动生成方法
CN111966340A (zh) * 2020-08-20 2020-11-20 杭州安恒信息技术股份有限公司 一种基于Mybatis框架的代码生成方法、装置、设备及介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113515278A (zh) * 2021-06-16 2021-10-19 深圳奥哲网络科技有限公司 低代码模型处理方法、系统、电子设备及存储介质
CN114564176A (zh) * 2022-01-27 2022-05-31 阿里云计算有限公司 一种代码开发方法、服务器及存储介质
CN114564176B (zh) * 2022-01-27 2023-08-22 阿里云计算有限公司 一种代码开发方法、服务器及存储介质

Similar Documents

Publication Publication Date Title
US7681176B2 (en) Generating a graphical designer application for developing graphical models
US6651240B1 (en) Object-oriented software development support apparatus and development support method
US8091071B2 (en) Method and system for template-based code generation
US8826224B2 (en) Apparatus and method for supporting model-driven development
US7506247B2 (en) Method for capturing document style by example
KR101143027B1 (ko) 자기 기술적 소프트웨어 이미지 업데이트 컴포넌트
US7096420B1 (en) Method and system for automatically documenting system command file tags and generating skeleton documentation content therefrom
US20080072217A1 (en) Method, apparatus, and system for customizing and performing policy in version control
WO2007011942A1 (en) System and method for automatic or semi-automatic software integration
CN112965785A (zh) 基于容器的微服务应用开发方法及开发平台
US20050188323A1 (en) Template creation apparatus and creation method
CN104866298A (zh) 基于流程图的流程化业务实现方法和装置
CN108595187A (zh) 安卓安装包集成软件开发工具包的法、装置及存储介质
CN112596706A (zh) 模式化代码生成方法、装置和计算机可读存储介质
CN113553035A (zh) 一种通用的前端ui组件库的设计和构建方法
CN113778445A (zh) 一种跨平台组件生成方法、装置、电子设备及存储介质
CN113312033A (zh) 一种模板化的协议生成、管理方法
US6980941B2 (en) Method and computer program product for realizing a system specification which is described in a system description language
CN110532526A (zh) 数据转化方法、电子装置及计算机可读存储介质
Buchmann et al. On a-posteriori integration of ecore models and hand-written java code
CN109254774A (zh) 软件开发系统中代码的管理方法和装置
CN114661298A (zh) 公共方法自动生成方法、系统、设备及介质
CN113901025A (zh) 数据库管理方法、装置、设备和存储介质
CN113778421A (zh) 一种生成业务代码的方法及设备
CN110673890A (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