数据库操作代码的生成方法及装置与流程

文档序号:27016824发布日期:2021-10-23 01:39阅读:74来源:国知局
数据库操作代码的生成方法及装置与流程

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是本技术一示例性实施例示出的一种用户选择dao层技术类型对应的数据库操作代码的生成方法流程图;
25.图5是本技术一示例性实施例示出的一种电子设备的结构示意图;
26.图6是本技术一示例性实施例示出的一种数据库操作代码的生成装置的框图。
具体实施方式
27.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
28.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”、“上述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
29.对于在业务实现时需要连接数据库的软件项目来说,软件项目中不同功能模块所实现的业务功能及其实现逻辑可能并不相同,但针对数据库中的数据进行的基本操作往往是相同的,如针对数据的增加、删除、修改、查找、求和、排序等,这些操作对应的数据库操作代码也基本相同,若由开发人员逐一编写上述数据库操作代码,难免导致代码重复,无谓的增大了项目开发的工作量。为此,某些开源社区提供了具有代码自动生成功能的代码生成框架,但这类框架往往是基于某一固定技术搭建的,因此使这类框架生成的数据库操作代码也必然是基于框架中集成的这种固定技术,而开发人员无法选择其他技术类型进行数据库操作代码的自动生成,不仅适用场景有限,而且在反复修改项目需求或开发人员不熟悉上述固定技术等情况下,反而会降低开发人员的开发效率。
30.为解决上述技术问题,本技术提出一种数据库操作代码的生成方法。为对本技术
进行进一步说明,提供下列实施例,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本技术保护的范围。
31.图1是本技术一示例性实施例示出的一种数据库操作代码的生成方法流程图。如图1所示,该方法可以包括以下步骤:
32.步骤102,通过与目标数据库建立连接,获取所述目标数据库的结构参数。
33.因为每个软件项目连接的数据库不同,所以软件项目内各功能模块中的数据库操作代码也不相同,即软件项目中的数据库操作代码,对其所连接的数据库具有针对性,因此在生成数据库操作代码之前需要先与数据库建立连接,所连接的数据库即为目标数据库。连接目标数据库之后,获取该目标数据库的结构参数。
34.本技术方案中的目标数据库可以为oracle、mysql、db2、microsoft sql server、microsoft access等关系型数据库,也可以为oracle bdb、hbase、mongodb、redis、memcache等非关系型数据库,本技术对此并不进行限制。在一实施例中,目标数据库为关系型数据库,结构参数可以包括:目标数据库的库信息、目标数据库中数据表的表信息和表结构等参数。
35.在一实施例中,根据用户设定的数据库连接参数,与目标数据库建立连接;读取目标数据库的参数配置信息,以确定目标数据库的结构参数。用户通过发出的数据库连接指令设定目标数据库的连接参数,如目标数据库的名称、类型、访问接口地址等,以便根据上述连接参数与目标数据库建立连接。
36.在一实施例中,根据用户发出的数据表配置指令,确定目标数据库中的目标数据表,以针对目标数据表生成操作代码。数据库中通常具有多个数据表,软件项目可能仅针对目标数据库中的某些数据表进行数据操作,这部分数据表即为目标数据表。目标数据表可以根据用户发出的上述数据表配置指令由用户自行设置,也可以在用户未发出上述数据表配置指令时,按照默认设置确定目标数据库中的目标数据表,当然还可以根据上述软件项目或者目标数据库中的其他参数进行确定。
37.步骤104,根据用户发出的技术选型指令,确定被选中的技术类型。
38.本技术方案生成的数据库操作代码所采用的编程语言可以是java语言、c语言、c#语言、易语言、python语言等的任一种,本技术对此并不进行限制。相应的,用户(通常为软件项目的开发人员)可以选择的技术类型可以是针对上述一种编程语言的专用技术类型,也可以是针对上述多种编程语言的通用技术类型。在一实施例中,被选中的技术类型基于java语言,其中dao(data access object,数据访问层)层的技术类型包括下述至少之一:mybatis框架、hibernate框架、mybatis-plus框架。
39.在一实施例中,被选中的技术类型为自定义技术类型,上述自定义技术类型及其对应的自定义模板文件由用户自定义;上述方法还包括:将上述目标数据库的结构参数转换为符合自定义模板文件对应格式的自定义结构参数。供用户选择的技术类型可以是框架中预设的技术类型,也可以是由用户自定义的技术类型,针对用户选择的不同技术类型,分别具有不同的模板文件与之一一对应,用户可选择的自定义技术类型对应的自定义模板文件可以由用户自定义,而直接获取的目标数据库的结构参数所对应数据格式可能与自定义模板文件中的数据格式并不匹配,因此需要将目标数据库的结构参数转换为符合自定义模
板文件对应格式的自定义结构参数,以便于使用该自定义模板文件生成数据库操作代码。
40.步骤106,将所述结构参数注入所述技术类型对应的模板文件,以生成针对所述目标数据库的操作代码。
41.在一实施例中,生成的所述操作代码用于创建api项目,上述方法还包括:根据用户发出的项目配置指令,确定api项目对应的项目包名和/或项目名;在项目包名和/或项目名对应路径下生成所述操作代码。本技术方案生成的操作代码可以应用于基于spring框架、spring boot或struts 2等框架构建的api项目或restful api项目。
42.在一实施例中,最终生成的操作代码针对目标数据库中的数据执行的操作可以包括:增加、删除、修改、查找、求和、排序等的一种或多种。
43.由上述方案可见,本技术为用户提供多种可供选择的技术类型,不仅解决了固定技术类型导致的代码兼容性问题;而且允许用户选择熟悉的技术类型以降低技术学习成本,提高项目开发效率。
44.图2是本技术一示例性实施例示出的另一种数据库操作代码的生成方法流程图。该方法可以包括以下步骤:
45.步骤202,接收用户发出的指令。
46.首先需要说明的是,本技术所述数据库操作代码的生成方法可以通过独立的功能软件、可执行文件或可以在idea等项目开发软件中被调用的功能插件等形式实现。具体的,若是独立的功能软件,则该功能软件需要预先安装在具有相应运行能力的软硬件环境中;若是可执行文件,则该可执行文件需要预先配置在具有软件运行能力的硬件环境下的合适路径中;若是功能插件,则该功能插件需要预先与项目开发软件进行连接,以在使用该项目开发软件进行项目开发的合理时间与项目的合理位置处调用上述功能插件用于生成操作代码。
47.以上述功能插件为例,在项目开发软件中调用上述功能插件后,用户可以向该插件发出指令,如数据库连接指令、技术选型指令或用于设置相应参数的其他指令等。其中,上述数据库连接指令用于指定需要连接的目标数据库,具体的,用户可以对application-dev.properties和/或application-init.properties配置文件进行例如jdbc(java database connectivity,数据库连接)、待开发项目对应的项目包名等的参数配置,其中,上述配置文件可以保存在待开发项目的src/resoucres路径下。上述技术选型指令用于指定用户选择的某种技术类型,如用户可以选择所生成数据库操作代码对应的编程语言,可选的有java语言、c语言、c#语言、易语言、python语言等;当用户选择java语言后,可以进一步选择dao层对应的数据库连接技术,可选的有mybatis框架、hibernate框架、mybatis-plus框架等,相应的,上述功能插件中可以预先设置多种功能类型以供用户选择,其他技术类型的选择方式同上,不再一一赘述。另外,用户还可以选择自定义技术类型,自定义技术类型及其对应的自定义模板文件均可由用户自定义。
48.具体的,可以在插件界面中显示不同技术类型对应的控件以供用户点击选择,也可以在插件界面中显示技术类型名称输入框,以供用户在该输入框中输入其欲选择的技术类型名称或名称关键字,当然还可以为其他方式,本技术对此并不进行限制。
49.可见本技术方法不仅允许用户在插件自带的预设技术类型中,选择自己熟悉的技术类型,还允许用户自定义技术类型,从而能够满足用户对多种项目功能的不同编程需求,
极大的扩展了本方法的适用场景。
50.步骤204,按照数据库连接指令连接目标数据库。
51.在用户设置完成后,下述步骤204-步骤214均可以由代码生成器codeauthgenerator中的main测试方法自动执行,main测试方法构成上述数据库操作代码生成方法的主入口,其可以位于待开发软件项目的src/test路径下。
52.当用户发出数据库连接指令后,按照该指令中包含的目标数据库的名称、类型、访问接口地址等数据库连接参数与目标数据库建立连接。
53.步骤206,获取目标数据库的结构参数。
54.当上述功能插件与目标数据库建立连接后,可以从其连接的目标数据库中获取目标数据库的结构参数。目标数据库的结构参数可以是目标数据库的库信息,如目标数据库的名称和状态、目标数据库的实例名称和状态、控制文件的名称和位置、日志文件的组名、成员数量、成员状态、成员大小、成员位置、数据文件的大小和位置、用户拥有的对象和类型、临时文件信息、归档日志信息等;数据表的表信息可以为表名称、表大小、表建立时间、备注等信息;数据表的表结构可以为字段、类型、主键、外键、索引等。当然,上述功能插件从目标数据库中获取的具体参数可以为上述参数中的一个或多个,并对此并不进行限制。
55.正因为本方案基于用户所选择目标数据库的结构参数生成操作代码,所以最终生成的是对目标数据库具有针对性的操作代码,也就是说,针对某一目标数据库生成的操作代码能够有针对性的适用于该目标数据库。从而在操作代码应用于软件项目时能够更好地实现数据库操作功能。
56.另外,在上述步骤204中,用户还可以发出数据表配置指令以选择目标数据库中的目标数据表作为数据库操作代码的操作对象,该数据表配置指令可以包含目标数据库中目标数据表的名称、大小、数据格式等信息。在用户发出上述数据表配置指令的情况下,根据上述指令确定目标数据库中的目标数据表,以针对所述目标数据表生成操作代码。可见,本技术还允许用户在目标数据库的大量数据表中自定义选择目标数据表,并仅针对被选择的目标数据库生成操作代码,不仅使得代码对应的数据表选择方式更灵活且具有针对性,而且所生成代码比默认将全部数据表作为目标数据表生成的代码更简洁。
57.步骤208,按照技术选型指令确定所选技术类型对应的模板文件。
58.实际上,待选择的每种技术类型都对应特定的模板文件,如供用户选择的dao层对应的mybatis框架、hibernate框架或mybatis-plus框架等数据库连接技术,分别对应不同的模板文件以用于生成dao层的操作代码。可以理解的是,任意一种技术类型对应的模板文件的数量可以有一个或多个,本技术对此并不进行限制,但任意一种技术类型对应的模板文件应当与其他技术类型对应的模板文件有所区别。模板文件中通常保存有关键字、变量或类等代码基本信息,而且任意一种技术类型对应的模板文件中的基本信息具有与该技术类型对应的固定格式,因而基于该模板文件生成的数据库操作代码也符合上述固定格式。
59.当用户选择任意一种技术类型时,会基于被选中的技术类型对应的模板文件生成最终的数据库操作代码,如当用户选择mybatis框架作为dao层的数据库连接技术时,后续会采用mybatis框架生成dao层的数据库操作代码。当用户选择一种技术类型后,基于该技术类型生成操作代码的具体过程可以参见相关技术中公开的内容,本技术不再赘述。上述功能插件还可以由用户选择自定义技术类型,其中,自定义技术类型及其对应的自定义模
板文件由用户进行定义或参数设置。
60.若用户选择的是标准技术类型,可以从上述功能插件中预存的模板文件库中获取上述模板文件,也可以从标准文件库、开源文件库、自建文件库或其他保存有模板文件的路径下获取上述模板文件,本技术对此并不进行限制。
61.通常,上述功能插件中可供用户选择的标准技术类型通常具有对应的标准模板文件,用户自定义的技术类型对应自定义模板文件。因为不同技术类型对应的模板文件不相同,因此需要判断用户选择的技术类型:当用户选择的是自定义技术类型时,转至步骤210;否则,当用户选择的是标准技术类型时,转至步骤212。
62.步骤210,将结构参数转换为自定义模板文件对应格式的自定义结构参数。
63.当用户选择的是自定义技术类型时,该自定义技术类型对应的自定义模板文件由用户自己定义,因为这类自定义模板文件中的代码格式通常与所获取目标数据库的结构参数并不一致,因此需要将目标数据库的结构参数换为自定义模板文件对应格式的自定义结构参数,实际上就是将目标数据库的结构参数的当前格式转换为符合自定义模板文件的格式。
64.可见,即使提供的标准技术类型全都不适合当前的项目开发或用户全都不熟悉,也可以由用户自定义合适的或自己熟悉的自定义技术类型进行项目开发,从而能够满足用户多样的开发需求,进一步扩大了适用场景。
65.步骤212,将结构参数注入模板文件。
66.在用户选择的是标准技术类型的情况下,将目标数据库的结构参数直接注入用户选择技术类型所对应的模板文件中;在用户选择的是自定义技术类型的情况下,将步骤210中转换后的自定义结构参数注入自定义模板文件中。实际上,还可以将与目标数据库或上述软件项目相关的动态数据与上述结构参数一同注入模板文件。可以理解的是,根据不同的项目需求等实际情况,可以将目标数据库的结构参数和上述动态数据进行进一步处理后再注入模板文件,上述注入操作的具体过程可参见相关技术中公开的内容,本技术对此并不进行限制。
67.可见,正因为任意一种技术类型都对应特定的模板文件,而注入模板文件中的静态数据和动态数据都满足该模板文件中预设的固定格式,因此当用户选择某一种技术类型后,基于该技术类型所对应模板文件所生成操作代码的基本格式都是相同的,从而实现了操作代码及其注释的统一化和规范化,便于后续代码修改及项目维护。
68.步骤214,生成对应于目标数据库的操作代码。
69.上述步骤212中的注入操作及本步骤都可以在freemarket框架下进行。最终生成的针对目标数据库的操作代码用于软件项目,在一示例性实施例中,上述软件项目可以是基于spring框架、spring boot框架或struts 2等框架构建的api或restful api项目,相应的,用户还可以在步骤202中发出包含上述项目对应的项目包名和/或项目名等项目信息的项目配置指令,以使本步骤214在上述项目报名和/或项目名对应路径下生成数据库操作代码。由于允许用户自定义代码生成路径,不仅避免了代码生成时的直接使用默认路径可能带来的报错问题,也免除了在默认路径生成后的可能需要进行的繁琐的代码路径转移操作。
70.在上述目标数据库操作代码生成后,用户可以在上述操作代码的基础上扩展具体
业务功能及其它必要的配置与连接,以实现最终软件项目的开发。当上述开发工作完成后,用户可以在对开发环境配置文件application-dev.properties进行配置后,启动上述软件项目。
71.综上可见,本技术方案能够实现标准化数据库操作代码的一键生成,减少了开发人员的基础代码编写工作量,使得开发人员能够将更多精力专注于业务代码的编写,有助于提高项目开发的质量和效率。
72.下面以上述功能插件对应的数据库操作代码生成框架为例,进一步说明本技术的上述方法。图3是本技术一示例性实施例示出的一种数据库操作代码的生成框架示意图。该框架主要可以包括:项目核心301和项目依赖302。其中,项目核心301还可以包含多个类,项目依赖302可以还包含多个依赖,上述多个类和多个依赖在本框架中的具体功能,参见下表1所示。
73.表1
[0074][0075]
开发人员在开发与数据库具有数据交互的软件项目时,可以先搭建好带待开发软件项目的整体框架,然后利用上述数据库操作代码的生成框架生成针对所连接目标数据库的操作代码,并将生成的数据库操作代码作为待开发软件项目整体框架的基础代码,最后在这部分操作代码的基础上扩展待开发项目的业务功能,从而实现软件项目的整体开发。
[0076]
下面结合图4在用户选择dao层技术类型的情况下,对图3所示数据库操作代码的生成框架的具体工作过程进行说明。图4是本技术一示例性实施例示出的一种用户选择dao层技术类型对应的数据库操作代码的生成方法流程图。首先,假设图4所示实施例中的代码生成框架基于freemarker框架搭建,该框架运行后输出的是基于java语言生成的数据库操作代码。该方法可以包括以下步骤(由处理类3011控制执行):
[0077]
步骤402,调取用户配置的数据。
[0078]
首先,在用户通过指令对数据库操作代码的生成框架(以下简称代码生成框架)进行基本配置(对应配置类3012)后,调取用户配置的数据。用户发出的配置指令包括用于选择相应的技术类型的技术选型指令;也可以包括数据库连接指令、数据表配置指令和项目配置指令等。具体的,通过发出包含数据库连接参数的数据库连接指令,指定需要生成操作代码的目标数据库,以使上述代码生成框架在接收到上述指令后与目标数据库建立连接;若用户未发出上述数据库连接指令,则该框架按照默认设置或数据库的其他信息确定目标数据库并与之建立连接,其中,上述默认设置可以是对应软件项目连接的所有数据库或满足预设条件的部分数据库。
[0079]
通过发出包含数据表信息的数据表配置指令指定需要生成操作代码的目标数据库,以使上述框架在接收到上述数据表配置指令后确定需要生成操作代码的目标数据表,并在后续过程中仅获取上述目标数据表的表信息与表结构等参数,从而最终生成针对目标数据表中数据的操作代码。上述数据表配置指令可以在上述框架执行前发出,也可以上述框架执行过程中临时发出,本技术对此并不进行限制。可以理解的是,在用户发出上述数据表配置指令的情况下,上述框架基于上述指令确定目标数据表,而在用户未发出上述数据表配置指令的情况下,上述框架按照默认设置或目标数据库的结构参数等信息确定目标数据表,其中,上述默认设置可以是目标数据库内的所有数据表或满足预设条件的部分数据表。
[0080]
通过发出包含项目包名和/或项目名的项目配置指令指定生成的操作代码适用的软件项目,以使上述框架在上述项目包名和/或项目名对应路径下生成所述操作代码,并直接将生成的上述操作代码作为上述软件项目代码的一部分。其中,上述软件项目可以是基于spring框架、spring boot框架或struts 2等框架构建的api、restful api项目或其他功能项目。可以理解的是,在用户发出上述项目配置指令的情况下,上述框架可以在上述指令指定的项目路径下生成数据库操作代码;而在用户未发出上述项目配置指令的情况下,上述框架可以在默认路径下生成数据库操作代码,然后将生成的操作代码从默认路径中拷贝至软件项目的合适路径中。其中,上述默认路径可以是位于软件项目的保存路径中的路径,也可以是位于软件项目的保存路径之外的预设路径。
[0081]
在用户发出了上述一个或多个指令的情况下,代码生成框架可以按照用户发出的指令确定相应的配置数据。
[0082]
步骤404,连接数据库并获取数据库的结构参数。
[0083]
代码生成框架与数据库建立连接,然后获取数据库的结构参数。如前所述,在用户发出数据库连接指令的情况下,首先确定数据库连接指令中包含的配置数据指定的目标数据库,然后代码生成框架与该目标数据库建立连接。在上述连接建立后,代码生成框架可以主动向目标数据库发送结构参数获取请求,并接收目标数据库基于上述结构参数获取请求返回的结构参数;代码生成框架也可以被动接收由目标数据库主动发送的结构参数,此时,目标数据库按照预设的参数清单确定需要发送的结构参数,并按照预设的发送格式向代码生成框架发送上述结构参数。
[0084]
可以理解的是,在用户发出了数据表配置指令的情况下,上述结构参数中不仅包括目标数据库的库信息,还包括目标数据表的表信息和表结构等参数。
[0085]
步骤406,根据用户选择的dao层技术类型选择相应的模板文件。
[0086]
实际上,用户可以选择mybatis框架、hibernate框架、mybatis-plus框架等作为dao层的技术类型(对应配置类3012)。不妨假设用户选择了mybatis框架,此时代码生成框架中的处理类3011会根据用户的选择确定出对应于mybatis框架的模板文件,不妨称之为mybatis模板文件。
[0087]
当然,上述代码生成框架中应当预存有不同技术类型与相应模板文件之间的对应关系表,并且,上述代码生成框架中可以预存有多种模板文件,也可以仅预存有多种模板文件的获取地址,如标准文件库、开源文件库、自建文件库或其他保存有模板文件的路径等,此时,代码生成框架可以在确定上述mybatis模板文件后从保存的上述路径中下载上述mybatis模板文件。相应的,上述模板文件3016中可能保存有实际的模板文件,也可以仅保存有上述技术类型与模板文件或其下载地址之间的对应关系表。
[0088]
在本实施例中,因为用户选择的mybatis技术类型是代码生成框架提供的的标准技术类型,因此并不需要对目标数据库的结构参数及其他数据进行格式转换,故类转换器3017实际上并未使用。
[0089]
步骤408,加载模板文件和动态数据生成dao层代码。
[0090]
在freemarker框架下,将上述步骤获取的目标数据库的结构参数以及目标数据库或上述代码生成框架的其他动态数据注入上述mybatis模板文件,并结合通用类3015中记载的表单增删改查等基本操作生成针对目标数据库的dao层操作代码。
[0091]
步骤410,依次生成service层和controller层代码。
[0092]
类似的,在freemarker框架下,分别结合通用类3015中记载的service层的批量增删改查以及controller层的请求操作等基本操作,分别生成针对目标数据库的service层和controller层操作代码。
[0093]
可见,上述代码生成过程中对数据进行的基本处理需要用到工具类3013和枚举&异常3014;上述代码生成过程中的数据获取成功、代码生成完毕等正常操作信息以及可能出现的告警、报错等异常信息都会被logback 3023记录在日志中,以便于用户分析上述代码生成框架的工作状况或错误原因。
[0094]
因为上述代码生成过程中使用了目标数据库的结构参数,上述结构参数能够反映目标数据库的类型(结构化、非结构化)、数据存储方式(表格、键值对、图结构或者文档)、表结构(数据表文件名、数据表包含哪些字段,各字段的字段名、字段类型、字段宽度)等信息,因此上述过程生成的dao层、service层和controller层操作代码能够有针对性的实现对目标数据库中的数据进行增删改查等基本操作。
[0095]
图5是本技术一示例性实施例示出的一种电子设备的结构示意图。请参考图5,在硬件层面,该电子设备包括处理器501、内部总线502、网络接口503、内存504以及非易失性存储器505,当然还可能包括其他业务所需要的硬件。处理器501从非易失性存储器505中读取对应的计算机程序到内存504中并运行,在逻辑层面上形成数据库操作代码的生成装置。当然,除了软件实现方式之外,本技术并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0096]
图6示出了本技术一示例性实施例示出的一种数据库操作代码的生成装置的框图。请参见图6,在软件实施方式中,该数据库操作代码的生成装置可以包括结构参数获取
单元601、技术类型确定单元602和操作代码生成单元603。其中:
[0097]
结构参数获取单元601,用于通过与目标数据库建立连接,获取所述目标数据库的结构参数;
[0098]
技术类型确定单元602,用于根据用户发出的技术选型指令,确定被选中的技术类型;
[0099]
操作代码生成单元603,用于将所述结构参数注入所述技术类型对应的模板文件,以生成针对所述目标数据库的操作代码。
[0100]
可选地,所述结构参数获取单元601具体用于:
[0101]
根据用户设定的数据库连接参数,与目标数据库建立连接;
[0102]
读取所述目标数据库的参数配置信息,以确定所述目标数据库的结构参数。
[0103]
可选地,所述被选中的技术类型基于java语言,其中dao层的技术类型包括下述至少之一:
[0104]
mybatis框架、hibernate框架、mybatis-plus框架。
[0105]
可选地,所述被选中的技术类型为自定义技术类型,所述自定义技术类型及其对应的自定义模板文件由用户自定义;所述数据库操作代码的生成装置还包括:
[0106]
格式转换单元604,用于将所述结构参数转换为符合所述自定义模板文件对应格式的自定义结构参数。
[0107]
可选地,生成的所述操作代码用于创建api项目,所述数据库操作代码的生成装置还包括:
[0108]
配置指令接收单元605,用于根据用户发出的项目配置指令,确定所述api项目对应的项目包名和/或项目名;
[0109]
指定路径生成单元606,用于在所述项目包名和/或项目名对应路径下生成所述操作代码。
[0110]
可选地,所述api项目基于spring框架或spring boot框架构建。
[0111]
可选地,所述数据库操作代码的生成装置还包括:
[0112]
目标数据表确定单元607,用于根据用户发出的数据表配置指令,确定所述目标数据库中的目标数据表,以针对所述目标数据表生成所述操作代码。
[0113]
可选地,所述目标数据库为关系型数据库,所述结构参数包括:所述目标数据库的库信息、所述目标数据库中数据表的表信息和表结构。
[0114]
可选地,所述操作代码针对所述目标数据库中的数据执行的操作包括:增加、删除、修改和/或查找。
[0115]
上述装置中各个单元的功能和作用的实现过程详见上述方法中对应步骤的实现过程,在此不再赘述。
[0116]
在一个典型的配置中,电子设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0117]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0118]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法
或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0119]
对于上述装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本技术方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0120]
以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1