一种代码自动生成方法技术

技术编号:32927690 阅读:20 留言:0更新日期:2022-04-07 12:18
本发明专利技术涉及一种代码自动生成方法,与现有技术相比解决了代码编写不规范、开发效率低的缺陷。本发明专利技术包括以下步骤:基础代码的自动生成:以数据库为数据来源,根据数据库中的表结构生成单表操作的代码;业务代码的自动生成:以设计文档为数据来源,将其组装成模板数据自动生成代码。本发明专利技术能够根据模板自动生成代码,有利于代码规范及设计文档规范化,减少了基础代码漏洞发生的概率,有效避免代码中缺少注释的问题,同时避免了维护脚本和基础数据问题。题。题。

【技术实现步骤摘要】
一种代码自动生成方法


[0001]本专利技术涉及数据处理
,具体来说是一种代码自动生成方法。

技术介绍

[0002]在数据处理领域中,新员工对于公司的前台组件不熟悉,对框架理解不够,无法正确使用框架已提供的公共方法。同时,在实际开发过程中编写的代码不符合规范、风格不统一、注释不足、开发效率低;后台程序员对于前端的语法不熟悉,而且前端控件的属性也比较多,在使用控件的过程中经常会遇到属性不知道如何设置。开发中也有许多套用模板的基础代码,这些代码不涉及实际的业务逻辑,但是会占用一部分的开发时间。
[0003]针对以上问题,应该提供一套能够让新员工快速入门、提高老员工开发效率的代码生成工具,让开发人员只需要关注核心业务逻辑。即能提高开发效率节约约成本,也可以使代码更规范提高代码质量减少BUG发生率。

技术实现思路

[0004]本专利技术的目的是为了解决现有技术中代码编写不规范、开发效率低的缺陷,提供一种代码自动生成方法来解决上述问题。
[0005]为了实现上述目的,本专利技术的技术方案如下:
[0006]一种代码自动生成方法,包括以下步骤:
[0007]基础代码的自动生成:以数据库为数据来源,根据数据库中的表结构生成单表操作的代码;
[0008]业务代码的自动生成:以设计文档为数据来源,将其组装成模板数据自动生成代码。
[0009]所述基础代码的自动生成包括以下步骤:
[0010]根据文件类型利用模板引擎Velocity调用基础模板文件,其中实体类Entity、Mapper接口、sqlmap.xml文件调用对应的基础模板文件;
[0011]从数据库中获取表结构信息,通过jdbc连接获取指定schema下表的元数据,根据元数据中的字段名、字段类型和注释信息组装为基础模板使用的数据;
[0012]将基础模板使用的数据代入基础模板文件,调用模板引擎Velocity嵌套方法,生成对应的代码文件并保存到磁盘中。
[0013]所述业务代码的自动生成包括以下步骤:
[0014]利用Freemarker模板引擎编辑业务模板文件,其包括SQL、HTML、JavaScript、Java、XML和PROPERTIES模板;
[0015]针对SQL模板生成使用到的基础数据脚本,其包括画面、画面元素、权限控制、流程控制的基础数据,生成page_dml.ftl文件;
[0016]针对HTML生成符合html5规范的thymeleaf的html模板文件,针对JavaScript生成规范的JS模板,针对Java生成规范的JAVA模板,针对XML生成规范的XML模板,针对
PROPERTIES生成规范的PROPERTIES模板示例;
[0017]获取数据进行解析设计文档:设计文档为excel格式;
[0018]将业务模板使用的数据代入业务模板文件,调用模板引擎Velocity嵌套方法,生成对应的代码文件并保存到磁盘中。
[0019]获取数据进行解析设计文档包括以下步骤:
[0020]设计文档由excel、后缀为xlsx文档编写而成,同一个设计文档中按照不同的sheet划分为列表和详情页,其它sheet服务于这两个页面,完整的设计书包括若干个sheet页;
[0021]此sheet页包括操作区、查询条件区和查询结果区,分别对应列表画面的操作按钮组、查询条件表单和查询结果表格;操作区定义的按钮通过后续的“查询画面_事件名”这种命名规则的sheet来自定义事件,查询条件区域的控件的数据来源选择在设置为数据字典时必须指定字典代码,如果设置rest接口作为数据来源,则必须填写正确的接口地址,请求方式固定为GET;此处定义的rest接口对应的后台代码不属于工具的生成范围,查询结果区域则设置每个字段的展现形式,即可查阅“基础数据”;
[0022]对设计文档中的关键字进行说明;
[0023]设定查询画面_查询SQL,此sheet命名根据下划线解析为两部分,下划线之前为功能画面,之后的则为具体的实现逻辑命名;
[0024]为业务校验逻辑:首先使用公共校验方法来校验数据合法性及流程是否存在;其次生成流程引擎的必要参数;再次为流程引擎启动时的回调处理逻辑,删除操作的流程启动时不需要做任务处理,设计文档中此处留空;最后为流程完成时的处理逻辑,此处仅需要删除相关表数据即可;
[0025]设定校验逻辑编写规则:先写上需要校验的条件表达式,然后另起一行写出“NG条件:”(触发校验失败)的条件表达式,同时再新起一行写出“错误消息:”,错误消息中的BUSS_COM_E_004为多语言的消息代码,这三行将组成业务校验逻辑,校验逻辑之间用空行分隔;
[0026]设定流程发起参数:设定业务编码、业务类型、业务说明、业务主键流程引擎的必要参数;
[0027]设定流程审批结束处理逻辑:流程审批通过后的业务处理,流程的驳回和作废由框架自动处理,流程审批通过后,对每一个数据库表的处理用一个单独的表格来表述,表格之间用空行分隔,表头区域部分写明数据库表名、表格操作方式、别名,别名与实体类对应。
[0028]有益效果
[0029]本专利技术的一种代码自动生成方法,与现有技术相比能够根据模板自动生成代码,有利于代码规范及设计文档规范化,减少了基础代码漏洞发生的概率,有效避免代码中缺少注释的问题,同时避免了维护脚本和基础数据问题。本专利技术提高了开发效率,使开发人员能够将有限的时间用在关键的逻辑上,方便产品的后期维护及可持续发展。
附图说明
[0030]图1为本专利技术的方法顺序图。
具体实施方式
[0031]为使对本专利技术的结构特征及所达成的功效有更进一步的了解与认识,用以较佳的实施例及附图配合详细的说明,说明如下:
[0032]在实际应用中,公司的代码生成工具被拆分为两个部分,基础代码生成工具和业务代码生成工具。
[0033]基础代码生成工具以数据库作为数据来源,根据数据库中已设计好的表结构生成单表操作的代码。基础代码生成后,大量的实体类编写,单表增删改查SQL编写等基础工作都可以省略,能减少很大一部分开发工作量。即便如此,开发者还将面临这大量的业务逻辑编写,正确率和规范性仍然不够。业务代码生成工具可以很好的解决这个问题,简单的业务逻辑可保证90%可用,复杂业务逻辑做到60%到70%可用。
[0034]基础代码生成工具:主要是根据数据表结构生成单表操作的Mybatis相关代码。此工具为每个库表生成实体类、数据层接口、Mybatis的mapper文件;工具将生成的代码放到单独的package中,强制不允许修改,一旦表结构发生变更,重新生成即可。
[0035]业务代码生成工具:此处生成代码的数据来源为详细设计文档,由设计人员编写设计文档,文档越规范越详尽生成的代码会越准确。工具提供了一个设计文档的模板,设计人员需要使用此模板编写设计,设计人员无法确定使用的控件可交由开发补充本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码自动生成方法,其特征在于,包括以下步骤:11)基础代码的自动生成:以数据库为数据来源,根据数据库中的表结构生成单表操作的代码;12)业务代码的自动生成:以设计文档为数据来源,将其组装成模板数据自动生成代码。2.根据权利要求1所述的一种代码自动生成方法,其特征在于,所述基础代码的自动生成包括以下步骤:21)根据文件类型利用模板引擎Velocity调用基础模板文件,其中实体类Entity、Mapper接口、sqlmap.xml文件调用对应的基础模板文件;22)从数据库中获取表结构信息,通过jdbc连接获取指定schema下表的元数据,根据元数据中的字段名、字段类型和注释信息组装为基础模板使用的数据;23)将基础模板使用的数据代入基础模板文件,调用模板引擎Velocity嵌套方法,生成对应的代码文件并保存到磁盘中。3.根据权利要求1所述的一种代码自动生成方法,其特征在于,所述业务代码的自动生成包括以下步骤:31)利用Freemarker模板引擎编辑业务模板文件,其包括SQL、HTML、JavaScript、Java、XML和PROPERTIES模板;32)针对SQL模板生成使用到的基础数据脚本,其包括画面、画面元素、权限控制、流程控制的基础数据,生成page_dml.ftl文件;33)针对HTML生成符合html5规范的thymeleaf的html模板文件,针对JavaScript生成规范的JS模板,针对Java生成规范的JAVA模板,针对XML生成规范的XML模板,针对PROPERTIES生成规范的PROPERTIES模板示例;34)获取数据进行解析设计文档:设计文档为excel格式;35)将业务模板使用的数据代入业务模板文件,调用模板引擎Velocity嵌套方法,生成对应的代码文件并保存到磁盘中。4.根据权利要求3所述的一种代码自动生成方法,其特征在于,获取数据进行解析设计文档包括以下步骤:41)设计文档...

【专利技术属性】
技术研发人员:尹留志吴杰陈卓何阳阳卢鹏何成弥张健范念念
申请(专利权)人:安徽兆尹安联科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1