一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种java代码自动生成工具及方法与流程

2022-02-20 19:45:12 来源:中国专利 TAG:


1.本发明涉及计算机软件技术领域,特别涉及代码自动生成工具及方法。


背景技术:

2.随着软件行业的快速发展和软件需求的日益增长,如何快速开发出规范稳定的代码成为所有研发人员面对的难题。快速的开发代码利于迅速满足用户需求,缩短研发周期,降低研发成本;规范的代码降低了代码的阅读和修改难度,便于代码的二次需求开发和维护成本;而稳定的代码利于提高用户满意度,提高产品的质量。人工编写代码有些问题无法从根本上解决:第一,人工编写代码的工作量大,周期长,成本高;第二,对研发人员要求高,有些错误在不同人员和同一人员不同位置的代码中重复出现,个人能力再高也只能降低错误出现率,而无法从根本上避免这些错误;第三,虽然有公共遍码规范,但不同人员对代码规范的学习程度和理解方向有所差别,在编码过程中或多或少的带有个人的不良习惯,导致人员流动后,代码交接难度加大;第四,人工编码的代码重复利用率低、重复利用难度大,大量相似逻辑的代码在移植修改时容易遗漏,并因此造成一系列的严重错误。
3.为了避免上述问题的出现,开发了一批代码辅助生成工具,利用图形化界面配置的信息自动生成源代码,提高代码的生成速度、规范和稳定性。但现有技术生成的代码业务逻辑相对简单,只有增删改查等业务非常简单的功能,例如中国专利文献cn107357942a公开了一种源代码辅助生成工具及其生成方法,通过将数据结构和业务逻辑直接在图形化界面中进行配置,按照配置逻辑自动生成代码;虽然此技术方案支持多种数据库类型和多种标准格式表单但无法适用互联网大并发系统的代码生成,不能实现多表关联、数据字典转换、参数校验等常用代码,不能满足现有大并发系统的需求。


技术实现要素:

4.本发明提供一种java代码自动生成工具及方法,将开发者的复杂业务需求定义放到了表备注和字段备注中,通过解析这些信息,获取开发者的复杂业务需求,并通过代码生成器进行代码生成,实现多表关联、数据字典转换、参数校验等常用代码并满足大并发系统的需求。
5.为了实现上述目的,本发明提供以下技术方案:本发明提供一种java代码自动生成工具,包括数据库信息模块、信息获取模块、信息解析模块和代码生成模块;所述信息获取模块通过配置信息路由到不同的数据库信息模块获取数据库中的信息,所述信息解析模块对所述信息获取模块进行解析,所述代码生成模块根据所述信息解析模块解析的内容以及代码模板进行代码自动生成。
6.优选的,所述配置信息路是本领域的常规技术,不进行过多的叙述。
7.进一步的,所述数据库包括mysql、sqlserver、db2、oracle、postgresql、elesticsearch、mongodb、hive或hbase。
8.进一步的,所述信息获取模块包括表结构获取单元,所述表结构获取单元的数量
与所述数据库的种类相匹配;所述表结构获取单元包括获取数据对象,所述数据对象是根据单个或多个数据库表或视图抽象出来的数据结构实体,包括英文表名、中文表名、英文字段名、中文字段名、唯一约束、主键、类型、长度、精度、是否为空、默认值、数据源等详细配置信息。
9.进一步的,所述信息解析模块包括表信息解析单元、字段信息解析单元、表备注信息解析单元和字段备注解析单元,所述信息解析模块基于约定的信息模板对表备注信息和字段备注信息进行解析,获取用户复杂业务需求,为代码生成提供支撑。
10.优选的,所述信息模板为json数据格式。
11.进一步的,所述代码模板采用freemaker模板引擎制作,所述工具提供开发者制作的一套默认模板,用户也可根据自己需求自定义代码模板。
12.进一步的,所述代码生成模块包括持久层代码生成单元、业务层代码生成单元和控制层生成单元;所述持久层代码生成单元生成所述信息获取模块数从数据库获取信息相关的代码;所述业务层代码生成单元生成业务相关代码、日志监控代码、数据字典转换代码、事务控制相关代码和其他业务代码;所述控制层生成单元生成接口相关代码、权限控制代码、参数校验代码、swagger代码和其他控制代码。
13.一种java代码自动生成方法,包括以下步骤:(1)开发者定义需要生成功能的表结构;(2)修改代码生成器配置信息,并运行代码生成器;(3)代码生成器获取并解析表结构信息;(4)根据用户指定的代码模板生成代码;(5)基于步骤(3)解析出的用户需求,进行用户需求代码生成;(6)代码生成完毕。
14.进一步的,所述表结构的内容包括表信息、表备注信息、字段信息和字段备注信息;所述表备注信息以json格式定义表中文名、表与其他表的关联关系、连接方式、桥接字段、关联字段、排序字段信息;所述字段备注信息以json格式定义字段中文名、是否需要数据校验、数据校验规则、数据字典、主件类型信息。
15.进一步的,所述代码生成器配置信息包含数据库连接参数、数据表、代码路径、包名、模块名、表前缀、权限配置信息、是否覆盖、作者、swagger2注解、代码模板。
16.进一步的,所述代码生成器解析所述表备注信息和字段备注信息的内容确定用户是否有复杂的用户需求。
17.优选的,解析到表有关联表的需求,生成的sql需要是多表查询sql;解析到字段有字典转换需求,产生字典转换相关代码;代码生成器解析用户定义的json字符串获取用户需求,本发明具有以下有益效果:
(1)本发明可以和elesticsearch、mongodb、hive、hbase大数据库进行了对接,能够获取相关技术的表结构并生成相应的代码,使得代码生成器能够适用互联网大并发系统的代码生成,适应现在大并发系统的需求。
18.(2)本发明将开发者的复杂业务需求定义放到表备注和字段备注中,使得代码生成器能够获取到用户的复杂业务需求,再配合代码模板,满足复杂业务代码的生成,极大的提高了代码生成器的能力。
19.(3)本发明生成的代码,可直接部署运行,基本不需要再做开发工作,提高了工作效率。
20.(4)本发明的代码模板除了代码生成器提供一套默认模板外,用户也可根据自己需求定义模板,使本发明更具有大众性。
附图说明
21.图1是本发明的生成工具的模块示意图。
22.图2是本发明的生成方法的流程图。
具体实施方式
23.以下结合附图对本发明的具体实施方式做详细描述,应当指出的是,实施例只是对发明的具体阐述,不应视为对发明的限定,实施例的目的是为了让本领域技术人员更好地理解和再现本发明的技术方案,本发明的保护范围仍应当以权利要求书所限定的范围为准。
24.如图1所示,本发明提供一种java代码自动生成工具,其特征在于,包括数据库信息模块、信息获取模块、信息解析模块和代码生成模块;所述信息获取模块通过配置信息路由到不同的数据库信息模块获取数据库中的信息,所述信息解析模块对所述信息获取模块进行解析,所述代码生成模块根据所述信息解析模块解析的内容以及代码模板进行代码自动生成。
25.优选的,所述配置信息路是本领域的常规技术,不进行过多的叙述。
26.在一些优选方案中,所述数据库包括mysql、sqlserver、db2、oracle、postgresql、elesticsearch、mongodb、hive或hbase。
27.在一些优选方案中,所述信息获取模块包括表结构获取单元,所述表结构获取单元的数量与所述数据库的种类相匹配;所述表结构获取单元包括获取数据对象,所述数据对象是根据单个或多个数据库表或视图抽象出来的数据结构实体,包括英文表名、中文表名、英文字段名、中文字段名、唯一约束、主键、类型、长度、精度、是否为空、默认值、数据源等详细配置信息。
28.在一些优选方案中,所述信息解析模块包括表信息解析单元、字段信息解析单元、表备注信息解析单元和字段备注解析单元,所述信息解析模块基于约定的信息模板对表备注信息和字段备注信息进行解析,获取用户复杂业务需求,为代码生成提供支撑。
29.优选的,所述信息模板为json数据格式。
30.在一些优选方案中,所述代码模板采用freemaker模板引擎制作,所述工具提供开发者制作的一套默认模板,用户也可根据自己需求自定义代码模板。
31.在一些优选方案中,所述代码生成模块包括持久层代码生成单元、业务层代码生成单元和控制层生成单元;所述持久层代码生成单元生成所述信息获取模块数从数据库获取信息相关的代码;所述业务层代码生成单元生成业务相关代码、日志监控代码、数据字典转换代码、事务控制相关代码和其他业务代码;所述控制层生成单元生成接口相关代码、权限控制代码、参数校验代码、swagger代码和其他控制代码。
32.如图2所示,一种java代码自动生成方法,包括以下步骤:s1,开发者定义需要生成功能的表结构;s2,修改代码生成器配置信息,并运行代码生成器;s3,代码生成器获取并解析表结构信息;s4,根据用户指定的代码模板生成代码;s5,基于步骤s3解析出的用户需求,进行用户需求代码生成;s6,代码生成完毕。
33.在一些优选方案中,所述表结构的内容包括表信息、表备注信息、字段信息和字段备注信息;所述表备注信息以json格式定义表中文名、表与其他表的关联关系、连接方式、桥接字段、关联字段、排序字段信息;所述字段备注信息以json格式定义字段中文名、是否需要数据校验、数据校验规则、数据字典、主件类型信息。
34.在一些优选方案中,所述代码生成器配置信息包含数据库连接参数、数据表、代码路径、包名、模块名、表前缀、权限配置信息、是否覆盖、作者、swagger2注解、代码模板。
35.在一些优选方案中,所述代码生成器解析所述表备注信息和字段备注信息的内容确定用户是否有复杂的用户需求。
36.优选的,解析到表有关联表的需求,生成的sql需要是多表查询sql;解析到字段有字典转换需求,产生字典转换相关代码;代码生成器解析用户定义的json字符串获取用户需求,实施例:s1,开发者定义用户表和部门表,如表1-2所示,表1用户表
表2部门表s2,修改代码生成器配置信息,并运行代码生成器;s3,代码生成器获取并解析表结构信息;s4,根据用户指定的代码模板生成代码;s5,基于步骤s3解析到表备注中有{“linktab”:{“linkcolumn”:”dept_id,dept_id”,”showcolumn”:”dept_code,dept_name,pdept_code”}},说明用户有关联表需求,根据关联信息产生相关代码;解析到字段备注中{“dict_type”:”user_type”},说明用户有数据字典进行转换的需求,则将“用户类型”这个字段通过数据字典进行转换,产生字典转换相关代码;解析到字段备注中{“type”:”mobile”},说明用户有移动电话类型校验需求,产生相关校验代码;s6,代码生成完毕。
37.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献