代码工具
- 满足个性化需求 不同的项目有不同的编码规范和业务逻辑需求。通过自定义模板,开发者可以生成符合项目规范的代码,避免因默认模板不符合需求而进行大量手动修改。
- 提高开发效率 自定义模板允许开发者预先定义代码结构和逻辑,减少重复性工作,提高代码生成的效率和质量。特别是在需要生成大量相似代码的场景下,自定义模板的优势尤为明显。
- 促进代码一致性 通过统一的自定义模板,可以确保生成的代码在风格、结构和逻辑上保持一致,提升代码的可读性和维护性。
- 支持扩展性 自定义模板功能为项目的未来发展预留了扩展空间。开发者可以根据项目需求的变化,随时调整和优化模板内容,确保代码生成始终符合项目发展的需要。
规范表结构
- 表名命名规范
使用小写字母:表名通常使用小写字母,且不使用复数形式。
示例:user, order, product。
使用下划线分隔:表名中的单词之间用下划线 _ 分隔。
示例:user_info, order_detail。
避免保留字:避免使用数据库保留字(如 user, group, key 等)作为表名。
- 字段命名规范
使用小写字母:字段名使用小写字母,且不使用复数形式。
示例:user_id, order_time。
使用下划线分隔:字段名中的单词之间用下划线 _ 分隔。
示例:first_name, last_login_time。
主键字段:主键字段通常命名为 id,并使用自增类型。
示例:id。
外键字段:外键字段通常使用关联表名 + _id 的命名方式。
示例:user_id(关联 user 表的 id)。
- 数据表案例
代码生成工具的原理是动态解析数据表结构,根据字段名、字段类型、字段注释等信息解析并创建数据表对应模块的 CURD
功能,以下述 sys_example
数据表为例:
CREATE TABLE `sys_example` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '职级ID',
`tenant_id` int unsigned NOT NULL DEFAULT '0' COMMENT '租户ID',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '职级名称',
`status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '职级状态:1-正常 2-停用',
`sort` int unsigned NOT NULL DEFAULT '0' COMMENT '职级排序',
`create_user` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '添加人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_user` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '删除标识:0-有效 1-删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_name` (`name`) USING BTREE COMMENT '职级名称',
KEY `idx_tenant_id` (`tenant_id`) USING BTREE COMMENT '租户ID'
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='职级表';
可视化工具
为了便捷、灵活、快速的实现模块文件和代码的一键生成,软件本身内置了代码生成器可视化工具模块,可以根据需要执行单表生成和多表批量生成。
单个生成
为了便捷、灵活、快速的实现模块文件和代码的一键生成,软件本身内置了代码生成器可视化工具模块,可以选择需要生成的数据表,一键生成即可。
如上图所示,根据条件筛选出待生成模块的数据表,点击操作栏中的 一键生成
按钮执行模块文件生成即可。
/**
* 一键生成
*
* @param generatorTableDTO 参数
* @return 返回结果
*/
@Operation(summary = "一键生成", description = "一键生成")
@RequestLog(title = "一键生成", type = RequestType.GENERATE)
@PreAuthorize("@pms.hasAuthority('sys:generator:generator')")
@PostMapping("/generator")
public R generator(@RequestBody @Validated GeneratorTableDTO generatorTableDTO) {
String[] tableNames = generatorTableDTO.getTableNames();
return generatorService.generator(tableNames);
}
批量生成
为了便捷、灵活、快速的实现模块文件和代码的一键生成,软件本身内置了代码生成器可视化工具模块,可以选择需要生成的数据表,一键生成即可。
如上图所示,根据条件筛选出待生成模块的数据表,可以选择多个数据表后点击 一键生成
按钮执行模块文件生成即可。
/**
* 批量生成
*
* @param generatorTableDTO 参数
* @return 返回结果
*/
@Operation(summary = "批量生成", description = "批量生成")
@RequestLog(title = "批量生成", type = RequestType.GENERATE)
@PreAuthorize("@pms.hasAuthority('sys:generator:batchGenerator')")
@PostMapping("/batchGenerate")
public R batchGenerate(@RequestBody @Validated GeneratorTableDTO generatorTableDTO) {
return generatorService.generator(generatorTableDTO.getTableNames());
}
总结
自定义代码生成器工具可以显著提高开发效率,减少重复劳动。通过模板引擎和元数据解析,可以灵活生成各种代码文件。根据项目需求,可以选择合适的工具和实现方式,进一步扩展生成器的功能。
特别说明
目前系统中已集成的模块由工程师编码完成,切勿选择代码生成器工具中的数据表去再次生成,防止文件和代码被覆盖,导致无法正常运行。
在添加新模块时,请务必规范的建立表结构、表字段名、表字段注释等。有一点需要特别提醒的是,数据表名尽量使用单个英文单词,如果数据表名是复词时,因为生成器本身无法自动识别,因此生成后的文件,尤其是前端Vue文件的组件命令需要您根据实际情况进行手动调整,否则会因为命令问题无法找到对应的组件文件,导致启动运行报错,切记!