理想情况下,代码生成可以省去很多没有技术含量的重复性工作,代码生成可以按照统一的代码规范和格式生成代码,为日常的代码开发提供了很大的帮助。然而,代码生成也有其局限性。当涉及到复杂的业务逻辑时,简单的代码生成功能是无法解决的。
目前市面上有很多代码生成器,大部分都是基于现有的代码逻辑模板,按照一定的规则生成CRUD代码。至于更复杂的代码生成,大家都在人工智能领域探索。目前基于代码训练的人工智能代码生成仍然在于提供代码补全功能。例如,智能编程助手aiXcoder提供了常见的IDE插件。在项目开发的过程中,可以根据自己项目的代码进行训练,并在编程时提供适当的代码提示。微软、OpenAI、GitHub联合打造的Copilot也有同样的效果。它在项目开发中提供了优秀的代码自动完成功能,可以提高工作效率。希望在不久的将来,通过人工智能对大量代码的训练和分析,实现复杂业务逻辑的代码化。
我们这里做的代码生成器是按照正常开发流程中的思路设计的。一般我们的开发步骤是:需求分析->:数据建模->:数据库设计->;写后台代码(添加、删除、检查)->:写前端代码(添加、删除、检查)->;字段验证->;完美的商业逻辑-& gt;测试,所以我们希望代码生成器能够:
一、引入依赖库
1.在GitEgg-Platform项目中修改GitEgg-Platform-BOM项目的pom.xml文件,使用Mybatis-plus-generator最新版本3.5.1定制我们需要的代码生成器。
pom.xml
& lt属性& gt ...... & lt;!mybatis plus增强工具的代码生成-->: & lt;my batis . plus . generator . version & gt;3 . 5 . 1 & lt;/my batis . plus . generator . version & gt; ...... & lt;/properties & gt; & lt;依赖关系管理>。 & lt;依赖关系& gt ...... & lt;!- mybatis Plus代码生成工具-& gt; & lt;依赖性& gt & lt;groupId & gtcom.baomidou & lt/groupId & gt; & lt;artifactId & gtmybatis加发电机& lt/artifact id & gt; & lt;版本& gt$ { my batis . plus . generator . version } & lt;/version & gt; & lt;/dependency & gt; ...... & lt;/dependencies & gt; & lt;/dependency management & gt;2.在GitEgg-Platform项目中新建一个GitEgg-Platform-code-generator项目,提供生成自定义代码的基本能力,定义一些常量。
GitEggCodeGeneratorConstant.java常数类
包com . git egg . platform . code . generator . constant; 导入Java . io . file; /* * * @ class name:gitegcodegenerator status * @ description:constant class * @ author gitegg 2021-10-12 public class GitEggCodeGeneratorConstant { /* * * CONFIG */ public static final String CONFIG = & # 34;配置& # 34;; /* * * FIELDS */ public static final String FIELDS = & # 34;菲尔兹& # 34;; /* * * FORM _ FIELDS */ public static final String FORM _ FIELDS = & # 34;表单域& # 34;; /* * * BASE _ ENTITY _ FIELD _ LIST */ public static final String BASE _ ENTITY _ FIELD _ LIST = & # 34;baseEntityFieldList & # 34; /* * * Author */ public static final String Author = & # 34;GitEgg & # 34; /* * * JAVA _ PATH */ public static final String JAVA _ PATH = file . separator+& # 34;src & # 34+file . separator+& # 34;main & # 34+file . separator+& # 34;java & # 34+file . separator; /* * * RESOURCES _ PATH */ public static final String RESOURCES _ PATH = file . separator+& # 34;src & # 34+file . separator+& # 34;main & # 34+file . separator+& # 34;资源& # 34;+file . separator; /* * * VUE _路径 */ 公共静态最终字符串VUE _路径= file . separator+& # 34;src & # 34+file . separator+& # 34;观点& # 34;+file . separator; /* * * JS _ PATH */ public static final String JS _ PATH = file . separator+& # 34;src & # 34+file . separator+& # 34;api & # 34+file . separator; /* * * VUE _ JS _ PATH */ 公共静态最终字符串VUE _ JS _ PATH = & # 34;vueJsPath & # 34; /* * * CUSTOM _ FILE _ PATH _ MAP */ public static final String CUSTOM _ FILE _ PATH _ MAP = & # 34;customFilePathMap & # 34; }3。mybatis-plus-generator3.5.1版本支持生成。默认支持生成服务、serviceImpl、映射器、mapperXml、控制器、实体和定制的其他。可以为这些文件定制模板和输出路径,但是mybatis-plus-generator将所有定制的文件生成到other定义的目录中,这显然不符合我们的要求。比如我们需要的DTO文件、vue文件、js文件都会生成到不同的目录下。我们需要定制和扩展Freemarkertemplategine方法,以便为不同的目录生成定制文件。因为我们使用freemarker,所以我们定制了freemarkertemplategine实现类。
包com . git egg . platform . code . generator . engine; 导入com . baomi dou . mybatisplus . generator . config . po . tableinfo; import com . baomi dou . mybatisplus . generator . engine . freemarkertemplatengine; 导入Java . io . file; 导入Java . util . map; /** * Freemarker自定义输出自定义模板文件 * * @ author gitegg * @ since 2021-10-12 */ Public class giteggfreemarkertemplatengine extents freemarkertemplatengine { /* * *自定义输出自定义模板文件 * * @param customFile自定义配置模板文件customFile,TableInfo tableInfo,Map & lt字符串,对象& gtobject Map){ Map & lt;String,String & gtcustom file path =(Map & lt;String,String & gt)object map . get(& # 34;customFilePathMap & # 34); customFile.forEach((key,value)-& gt;{ String other path = custom file path . get(key); String fileName = String . format((other path+file . separator+& # 34;% s & # 34),关键); outputFile(新文件(文件名),objectMap,value); }); } }二。业务和实现方法
代码生成作为系统的一个功能模块,也需要考虑业务和数据库设计。这里主要有这些模块:
1.根据以上业务需求,T _ sys _ code _ generator _ data source(数据源配置)、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(数据字典配置)六个表。
CREATE TABLE ` t _ sys _ code _ generator _ data source `( ` id ` bigint(20)NOT NULL AUTO _ INCREMENT注释& # 39;主键& # 39;, ` tenant _ id ` bigint(20)NOT NULL默认0注释& # 39;租户id & # 39, ` data source _ name ` varchar(64)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;数据源名称& # 39;, `url` varchar(500)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;连接地址& # 39;, `username` varchar(64)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;用户名& # 39;, `password` varchar(64)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;密码& # 39;, `driver` varchar(64)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;数据库驱动& # 39;, `db_type` varchar(32)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;数据库的类型& # 39;, `comments` varchar(255)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;备注& # 39;, ` create _ time ` datetime(0)NULL默认空注释& # 39;创作时间& # 39;, `creator` bigint(20) NULL默认空注释& # 39;由& # 39;, ` update _ time ` datetime(0)NULL默认空注释& # 39;更新于& # 39;, `operator` bigint(20) NULL默认空注释& # 39;更新者& # 39;, `del_flag` tinyint(2) NULL默认0注释& # 39;1:删除0:不删除& # 39;, 主键(` id `)使用BTREE )ENGINE = InnoDB AUTO _ INCREMENT = 1 CHARACTER SET = ut F8 MB 4 COLLATE = ut F8 MB 4 _ general _ ci COMMENT = & # 39;数据源配置表& # 39;ROW _ FORMAT = DynamicCREATE TABLE ` t _ sys _ code _ generator _ config `( ` id ` bigint(20)NOT NULL AUTO _ INCREMENT注释& # 39;主键& # 39;, ` tenant _ id ` bigint(20)NOT NULL默认0注释& # 39;租户id & # 39, ` data source _ id ` bigint(20)NULL默认空注释& # 39;数据源& # 39;, `module_name` varchar(32)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;模块名称& # 39;, `module_code` varchar(32)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;代码& # 39;, `service_name` varchar(64)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;服务名称& # 39;, `table_name` varchar(64)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;姓名& # 39;, `table_alias` varchar(64)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;表格别名& # 39;, `table_prefix` varchar(64)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;表格前缀& # 39;, ` parent _ package ` varchar(500)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;父包名& # 39;, ` controller _ path ` varchar(100)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;控制器的路径& # 39;, `form_type` varchar(32)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;类型模式弹出抽屉抽屉标签新窗口& # 39;, `table_type` varchar(32)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;表格类型单单单多多表& # 39;, ` table _ show _ type ` varchar(32)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;类型表数据表树_表树表3左_树_表左树右表树数据树表_表左表右表左_表_树左表右树& # 39;, `form_item_col` varchar(32)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;场排列1一列一行2两列一行& # 39;, ` left _ tree _ type ` varchar(32)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;树型左组织树资源资源权限树& # 39;, ` front _ code _ path ` varchar(1000)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;前端代码路径& # 39;, ` service _ code _ path ` varchar(1000)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;后端代码路径& # 39;, ` import _ flag ` tinyint(1)NOT NULL默认0注释& # 39;支持导入1吗?0?不& # 39;, ` export _ flag ` tinyint(1)NOT NULL默认0注释& # 39;你支持导出1吗?0?不& # 39;, ` query _ reuse ` tinyint(1)NOT NULL DEFAULT 1 COMMENT & # 39;查询重用:分页查询和单记录查询共享同一个sql语句& # 39;, ` status _ handling ` tinyint(1)NOT NULL默认1注释& # 39;搬运& # 39;, `code_type` varchar(32)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT & # 39;0'评论& # 39;代码生成类型仅所有后端代码仅前端代码& # 39;, ` create _ time ` datetime(0)NULL默认空注释& # 39;创作时间& # 39;, `creator` bigint(20) NULL默认空注释& # 39;由& # 39;, ` update _ time ` datetime(0)NULL默认空注释& # 39;更新于& # 39;, `operator` bigint(20) NULL默认空注释& # 39;更新者& # 39;, `del_flag` tinyint(2) NULL默认0注释& # 39;1:删除0:不删除& # 39;, 主键(` id `)使用BTREE )ENGINE = InnoDB AUTO _ INCREMENT = 1 CHARACTER SET = ut F8 MB 4 COLLATE = ut F8 MB 4 _ general _ ci COMMENT = & # 39;代码生成配置表& # 39;ROW _ FORMAT = DynamicCREATE TABLE ` t _ sys _ code _ generator _ TABLE _ join `( ` id ` bigint(20)NOT NULL AUTO _ INCREMENT注释& # 39;主键& # 39;, ` tenant _ id ` bigint(20)NOT NULL默认0注释& # 39;租户id & # 39, ` generation _ id ` bigint(20)NOT NULL注释& # 39;代码生成主键& # 39;, ` data source _ id ` bigint(20)NULL默认空注释& # 39;数据源与主表一致& # 39;, ` join _ table _ name ` varchar(64)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;姓名& # 39;, ` join _ table _ alias ` varchar(64)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;表格别名& # 39;, ` join _ table _ prefix ` varchar(64)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;表格前缀& # 39;, ` join _ table _ type ` varchar(32)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;左连接右连接内等联接联合查询& # 39;, ` join _ table _ select ` varchar(255)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;自定义查询字段& # 39;, ` join _ table _ on ` varchar(255)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;用户定义的on条件& # 39;, `table_sort` int(11) NULL默认空注释& # 39;显示排序& # 39;, ` create _ time ` datetime(0)NULL默认空注释& # 39;创作时间& # 39;, `creator` bigint(20) NULL默认空注释& # 39;由& # 39;, ` update _ time ` datetime(0)NULL默认空注释& # 39;更新于& # 39;, `operator` bigint(20) NULL默认空注释& # 39;更新者& # 39;, `del_flag` tinyint(2) NULL默认0注释& # 39;1:删除0:不删除& # 39;, 主键(` id `)使用BTREE )ENGINE = InnoDB AUTO _ INCREMENT = 1 CHARACTER SET = ut F8 MB 4 COLLATE = ut F8 MB 4 _ general _ ci COMMENT = & # 39;多表查询中的联合表配置& # 39;ROW _ FORMAT = DynamicCREATE TABLE ` t _ sys _ code _ generator _ field `( ` id ` bigint(20)NOT NULL AUTO _ INCREMENT注释& # 39;主键& # 39;, ` tenant _ id ` bigint(20)NOT NULL默认0注释& # 39;租户id & # 39, ` generation _ id ` bigint(20)NOT NULL注释& # 39;代码生成主键& # 39;, ` join _ id ` bigint(20)NOT NULL注释& # 39;关联表主键& # 39;, ` join _ table _ name ` varchar(64)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;姓名& # 39;, `field_name` varchar(32)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;字段名& # 39;, `field_type` varchar(20)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;类型& # 39;, `comment` varchar(100)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;描述& # 39;, `entity_type` varchar(20)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;实体类型& # 39;, `entity_name` varchar(50)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;实体名称& # 39;, ` form _ add ` tinyint(1)NOT NULL默认0注释& # 39;表格加法& # 39;, ` form _ edit ` tinyint(1)NOT NULL默认0注释& # 39;表单编辑& # 39;, ` query _ term ` tinyint(1)NOT NULL默认0注释& # 39;查询条件& # 39;, ` list _ show ` tinyint(1)NOT NULL默认0注释& # 39;秀& # 39;, ` import _ flag ` tinyint(1)NOT NULL默认0注释& # 39;支持导入1吗?0?不& # 39;, ` export _ flag ` tinyint(1)NOT NULL默认0注释& # 39;你支持导出1吗?0?不& # 39;, ` required ` tinyint(1)NOT NULL默认0注释& # 39;这是必须的吗& # 39;, ` field _ unique ` tinyint(1)NOT NULL默认0注释& # 39;独特& # 39;, `query_type` varchar(32)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;查询类型& # 39;, `control_type` varchar(32)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;组件类型& # 39;, `dict_code` varchar(50)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL默认空注释& # 39;字典代码& # 39;, `min` bigint(20) NULL默认空注释& # 39;最小值& # 39;, `max` bigint(20) NULL默认空注释& # 39;最大值& # 39;, ` min _ length ` int(11)NOT NULL默认0注释& # 39;最小长度& # 39;, `max_length` int(11) NULL默认空注释& # 39;最大字段长度& # 39;, `default_value` varchar(50)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;默认值& # 39;, ` validate _ id ` bigint(20)NULL默认空注释& # 39;校验规则主键& # 39;, ` validate _ regular ' varchar(255)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;自定义正则表达式检查规则& # 39;, ` field _ sort ` int(11)NOT NULL DEFAULT 1 COMMENT & # 39;显示排序& # 39;, ` create _ time ` datetime(0)NULL默认空注释& # 39;创作时间& # 39;, `creator` bigint(20) NULL默认空注释& # 39;由& # 39;, ` update _ time ` datetime(0)NULL默认空注释& # 39;更新于& # 39;, `operator` bigint(20) NULL默认空注释& # 39;更新者& # 39;, `del_flag` tinyint(2) NULL默认0注释& # 39;1:删除0:不删除& # 39;, 主键(` id `)使用BTREE, 唯一索引` unique_field`(`generation_id `,` join_id `,` join_table_name `,` field_name `)使用BTREE COMMENT & # 39工会& # 39; )ENGINE = InnoDB AUTO _ INCREMENT = 1 CHARACTER SET = ut F8 MB 4 COLLATE = ut F8 MB 4 _ general _ ci COMMENT = & # 39;属性配置表& # 39;ROW _ FORMAT = DynamicCREATE TABLE ` t _ sys _ code _ generator _ validate `( ` id ` bigint(20)NOT NULL AUTO _ INCREMENT注释& # 39;主键& # 39;, ` tenant _ id ` bigint(20)NOT NULL默认0注释& # 39;租户id & # 39, `validate_name` varchar(32)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;检查姓名& # 39;, ` validate _ regular ' varchar(255)字符集utf8mb 4 COLLATE utf8mb 4 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;正则表达式检查规则& # 39;, ` status ` tinyint(2)NOT NULL DEFAULT 1 COMMENT & # 39;'0'禁用,& # 39;1'启用& # 39;, ` create _ time ` datetime(0)NULL默认空注释& # 39;创作时间& # 39;, `creator` bigint(20) NULL默认空注释& # 39;由& # 39;, ` update _ time ` datetime(0)NULL默认空注释& # 39;更新于& # 39;, `operator` bigint(20) NULL默认空注释& # 39;更新者& # 39;, `del_flag` tinyint(2) NULL默认0注释& # 39;1:删除0:不删除& # 39;, 主键(` id `)使用BTREE )ENGINE = InnoDB AUTO _ INCREMENT = 1 CHARACTER SET = ut F8 MB 4 COLLATE = ut F8 MB 4 _ general _ ci COMMENT = & # 39;字段验证规则配置表& # 39;ROW _ FORMAT = DynamicCREATE TABLE ` t _ sys _ code _ generator _ dict `( ` id ` bigint(20)NOT NULL AUTO _ INCREMENT注释& # 39;主键& # 39;, ` tenant _ id ` bigint(20)NOT NULL默认0注释& # 39;租户id & # 39, `parent_id` bigint(20) NULL默认空注释& # 39;父词典& # 39;, ` ancestors ' varchar(100)字符集utf8 COLLATE utf8_general_ci NULL默认空注释& # 39;所有高级字典id的集合,便于搜索& # 39;, `dict_name` varchar(40)字符集utf8 COLLATE utf8_general_ci NULL默认空注释& # 39;词典名称& # 39;, `dict_code` varchar(32)字符集utf8 COLLATE utf8_general_ci NULL默认空注释& # 39;字典值& # 39;, `dict_order` int(11) NULL默认空注释& # 39;排序& # 39;, ` dict _ status ` tinyint(2)NULL默认1注释& # 39;1有效,0禁用& # 39;, `comments` varchar(255)字符集utf8 COLLATE utf8 _ general _ ci NULL DEFAULT NULL COMMENT & # 39;备注& # 39;, ` create _ time ` datetime(0)NULL默认空注释& # 39;创作时间& # 39;, `creator` bigint(20) NULL默认空注释& # 39;由& # 39;, ` update _ time ` datetime(0)NULL默认空注释& # 39;更新于& # 39;, `operator` bigint(20) NULL默认空注释& # 39;操作员& # 39;, ` del _ flag ` tinyint(2)NOT NULL默认0注释& # 39;1:删除0:不删除& # 39;, 主键(` id `)使用BTREE, INDEX ` INDEX _ DICT _ name `( ` DICT _ name `)使用BTREE, INDEX ` INDEX _ DICT _ code `(` DICT _ code `),INDEX ` INDEX _ PARENT _ id `( ` PARENT _ id `)使用BTREE, INDEX ` INDEX ` TENANT _ id `( ` TENANT _ id `)使用BTREE ) ENGINE = InnoDB数据字典表& # 39;ROW _ FORMAT = Dynamic表结构建立后,首先使用mybatis-plus-generator的默认函数生成基本的CRUD代码,这里就不一一列举了。主要讲解如何结合业务使用mybatis-plus-generator读取数据库表和字段并显示在界面上,从而配置代码生成规则。
2.在GitEgg-Cloud项目下,在gitegg-plugin子项目下新建一个gitegg-code-generator项目,新建的IEngineService接口和接口实现类EngineServiceImpl用于查询一个数据源的所有表,查询一个表的字段信息,查询一个代码生成配置中的所有字段配置,执行代码生成功能。
包com . git egg . code . generator . engine . service; 导入com . baomi dou . mybatisplus . generator . config . po . table field; 导入com . baomi dou . mybatisplus . generator . config . po . tableinfo; import com . giteg . code . generator . config . dto . query configgdto; 导入com . giteg . code . generator . engine . dto . table dto; 导入Java . util . list; /** *代码生成器接口 * * @ author giteg */ 公共接口iengineservice { /* * * * table dto & gt;queryTableList(QueryConfigDTO QueryConfigDTO); /** *查询数据源表的字段信息 * * @ Param data sourceid * @ Param TableNames */ TableInfo & gt;query table fields(String data sourceid,List & lt字符串& gt表名); /** *查询代码生成配置中的所有字段 * @ param Query configgdto * @ return */ list { //包配置 Map < OutputFile,String & gtpathInfoMap = new HashMap & lt& gt(); pathinfomap . put(output file . mapper XML,service codepath+GitEggCodeGeneratorConstant。RESOURCES _ PATH+codeDirPath+CodeGeneratorConstant。映射器); builder.parent(parent) //设置父包名 。moduleName(moduleName) //设置父包模块名 。pathInfo(pathInfoMap);//自定义构建路径 }) 。injection config(builder->;{ String dtoName = strutil . upper first(config . getmodulecode()); //dto String dto file = dto name+CodeGeneratorConstant。DTO _爪哇; String created tofile = CodeGeneratorConstant。CREATE+dto file; String updated tofile = CodeGeneratorConstant。更新+dto file; String query dtofile = CodeGeneratorConstant。查询+dto file; //导出和导入 String Export file = dtoName+CodeGeneratorConstant。EXPORT _ JAVA String import file = dtoName+CodeGeneratorConstant。IMPORT _ JAVA //SQL String SQL file = dtoName+CodeGeneratorConstant。资源_ SQL //设置自定义输出文件 map < String,String & gtcustomFileMap = new HashMap & lt& gt(); customFileMap.put(dtoFile,CustomFileEnum。DTO _文件.路径); custom filemap . put(createDtoFile,CustomFileEnum。CREATE _ dto . path); custom filemap . put(updated tofile,CustomFileEnum。UPDATE _ dto . path); custom filemap . put(query dtofile,CustomFileEnum。QUERY _ dto . path); //导出和导入 custom filemap . put(Export file,CustomFileEnum。export . path); custom filemap . put(import file,CustomFileEnum。import . path); //SQL custom filemap . put(SQL file,CustomFileEnum。SQL . path); //由于当前版本框架只支持自定义输出到其他目录,这里我们使用outputCustomFile方法,该方法覆盖AbstractTemplateEngine来支持所有自定义文件输出目录 map
4.代码生成功能操作界面
数据源配置:
数据源配置
代码生成配置:
代码生成配置
关联表配置:
关联表配置
表格配置:
表格配置
表单配置:
表单配置
表单验证配置:
表单验证配置
列表查询配置:
列表查询配置
数据字典配置:
数据字典配置
验证规则配置:
验证规则配置