理想的情况下,代码生成可以节省很多重复且没有技术含量的工作量,并且代码生成可以按照统一的代码规范和格式来生成代码,给日常的代码开发提供很大的帮助。但是,代码生成也有其局限性,当牵涉到复杂的业务逻辑时,简单的代码生成功能无法解决。
目前市面上的代码生成器层出不穷,大多数的原理是基于已有的代码逻辑模板,按照一定的规则来生成CRUD代码。至于更为复杂的代码生成大家都在人工智能领域探索,目前基于代码训练的人工智能代码生成还在于提供代码补全功能方面,比如智能编程助手aiXcoder提供了常用IDE插件,在项目开发过程中,可以基于你项目的代码进行训练,编程时提供合适的代码提示。由微软、OpenAI、GitHub三家联合打造的Copilot也有异曲同工之妙,都是在项目开发中,提供优秀的代码自动补全功能从而可以提升工作效率。希望在不远的将来,我们可以实现复杂业务逻辑的代码也通过人工智能对大量代码的训练和分析来实现吧。
这里我们制作的代码生成器,是按照平时开发过程中的思考来设计,一般情况下我们的开发步骤是:需求分析->数据建模->数据库设计->编写后台代码(增删改查)->编写前台代码(增删改查)->字段校验->业务逻辑完善->测试,所以我们希望代码生成器能够:
一、引入依赖的库
1、修改GitEgg-Platform项目中的gitegg-platform-bom工程的pom.xml文件,这里使用mybatis-plus-generator目前最新版本3.5.1来自定义我们需要的代码生成器。
pom.xml
gitegg-platform-code-generator工程,提供基本的自定义代码生成能力,以及定义一些常量。
GitEggCodeGeneratorConstant.java常量类
packagecom.gitegg.platform.code.generator.engine;importcom.baomidou.mybatisplus.generator.config.po.TableInfo;importcom.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;importjava.io.File;importjava.util.Map;/***Freemarker自定义输出自定义模板文件**@authorGitEgg*@since2021-10-12*/publicclassGitEggFreemarkerTemplateEngineextendsFreemarkerTemplateEngine{/***自定义输出自定义模板文件**@paramcustomFile自定义配置模板文件信息*@paramtableInfo表信息*@paramobjectMap渲染数据*@since3.5.1*/@OverrideprotectedvoidoutputCustomFile(Map
代码生成作为系统的一个功能模块,也需要考虑业务、数据库设计,这里主要有这几个模块:
1、根据以上业务需求,设计了
t_sys_code_generator_datasource(数据源配置)、t_sys_code_generator_config(主数据表配置)、t_sys_code_generator_table_join(联表配置)、t_sys_code_generator_field(表字段配置)、t_sys_code_generator_validate(校验规则配置)、t_sys_code_generator_dict(数据字典配置)共六张表。
2、在GitEgg-Cloud项目下,gitegg-plugin子项目下新建gitegg-code-generator工程,新建IEngineService接口和接口实现类EngineServiceImpl用于实现:查询某个数据源的所有表、查询某个表的字段信息、查询某个代码生成配置里面所有的字段配置、执行代码生成功能。