pig系统快速开发指南:代码生成器使用教程
引言:告别重复劳动,5分钟生成完整业务模块
你是否还在为重复编写CRUD代码而烦恼?是否希望有一种工具能自动生成标准化的Controller、Service、Entity代码?pig系统的代码生成器(Code Generator)正是为解决这些痛点而生。本文将带你全面掌握这一高效开发工具,通过简单配置即可生成前后端完整代码,将开发效率提升80%。
读完本文后,你将能够:
- 快速搭建代码生成环境
- 配置多数据源实现跨库代码生成
- 自定义代码模板满足个性化需求
- 掌握高级功能如主子表生成、多租户适配
- 解决常见的代码生成问题
1. 代码生成器核心价值与架构解析
1.1 为什么选择pig代码生成器?
| 特性 | 传统开发 | pig代码生成器 | 效率提升 |
|---|---|---|---|
| 新建CRUD模块 | 手动编写8-12个文件 | 配置后自动生成 | 90% |
| 前端页面开发 | 从零开始编写Vue组件 | 一键生成完整页面 | 85% |
| 代码规范性 | 依赖人工检查 | 统一模板确保规范 | 100% |
| 跨库适配 | 手动适配不同数据库 | 内置多数据源支持 | 75% |
1.2 代码生成器架构设计
核心组件说明:
- 数据源管理:支持MySQL、Oracle等多种数据库,通过
dsName区分不同数据源 - 模板引擎:基于Velocity实现代码动态渲染,支持自定义模板
- 生成策略:通过
style参数控制不同UI框架(avue/element/uview)的代码生成 - 配置中心:通过
PigCodeGenDefaultProperties管理默认生成参数
2. 环境准备与依赖配置
2.1 系统要求
| 环境 | 版本要求 | 检查命令 |
|---|---|---|
| JDK | 17+ | java -version |
| Maven | 3.6+ | mvn -version |
| Node.js | 14+ | node -v |
| 数据库 | MySQL 8.0+/Oracle 12c+ | - |
2.2 项目依赖配置
查看pom.xml核心依赖:
<!-- 代码生成器核心依赖 -->
<dependency>
<groupId>com.pig4cloud.pig</groupId>
<artifactId>pig-codegen</artifactId>
<version>${revision}</version>
</dependency>
<!-- 模板引擎 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>${velocity.version}</version>
</dependency>
<!-- 数据库支持 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
2.3 启动代码生成器服务
# 方式一:通过Docker快速启动
docker-compose up -d pig-codegen
# 方式二:源码启动
cd pig-visual/pig-codegen
mvn spring-boot:run -Dspring-boot.run.profiles=dev
服务启动后,访问地址:http://localhost:5002(默认端口可在application.yml中修改)
3. 代码生成器使用全流程
3.1 数据源配置
- 添加数据源
在系统管理->数据源管理中添加数据库连接:
{
"dsName": "mysql_dev",
"dbType": "MYSQL",
"url": "jdbc:mysql://127.0.0.1:3306/pig?useUnicode=true&characterEncoding=utf8",
"username": "root",
"password": "password",
"driverClassName": "com.mysql.cj.jdbc.Driver"
}
- 验证数据源连接
系统会自动测试连接可用性,确保数据库服务正常且网络可达。
3.2 表结构选择与配置
- 选择数据表
在代码生成->表管理中,选择目标数据源(如mysql_dev),勾选需要生成代码的表:
- 配置生成参数
| 参数名 | 说明 | 示例值 |
|---|---|---|
| packageName | 基础包名 | com.pig4cloud.pig |
| moduleName | 模块名 | admin |
| functionName | 功能名 | 用户管理 |
| author | 作者 | lengleng |
| 邮箱 | wangiegie@gmail.com | |
| formLayout | 表单布局 | 2(两列) |
| style | 代码风格 | 1(element-ui) |
配置示例:
GenConfig config = new GenConfig(); config.setPackageName("com.pig4cloud.pig"); config.setModuleName("admin"); config.setTableName("sys_user"); config.setStyle("1"); // element-ui风格
3.3 代码生成与预览
- 预览代码
点击"预览"按钮,系统会返回生成的代码文件列表:
[
{
"codePath": "pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysUserController.java",
"code": "package com.pig4cloud.pig.admin.controller;\n...\n@RestController\n@RequestMapping(\"/sys/user\")\npublic class SysUserController extends BaseController {\n...\n}"
},
{
"codePath": "pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysUserService.java",
"code": "package com.pig4cloud.pig.admin.service;\n...\npublic interface SysUserService extends IService<SysUser> {\n...\n}"
}
]
- 生成代码
根据需求选择生成方式:
- ZIP下载:适合独立模块开发,通过
/generator/download接口获取压缩包 - 直接生成到项目:适合集成开发,通过
/generator/code接口直接写入指定目录
// 生成代码核心API调用
@GetMapping("/code")
public R<String> code(String tableIds) throws Exception {
// 多个表ID用逗号分隔
for (String tableId : tableIds.split(",")) {
generatorService.generatorCode(Long.valueOf(tableId));
}
return R.ok();
}
3.4 生成代码结构解析
以sys_user表生成为例,生成的代码结构如下:
pig-upms-biz/
├── src/main/java/com/pig4cloud/pig/admin/
│ ├── controller/
│ │ └── SysUserController.java // 控制层
│ ├── service/
│ │ ├── SysUserService.java // 服务接口
│ │ └── impl/SysUserServiceImpl.java // 服务实现
│ ├── mapper/
│ │ └── SysUserMapper.java // 数据访问层
│ └── entity/
│ └── SysUser.java // 实体类
└── src/main/resources/
└── mapper/
└── SysUserMapper.xml // MyBatis映射文件
pig-ui/
└── src/views/
└── sys/
└── user/
├── user.vue // 列表页
├── user-add.vue // 添加页
└── user-edit.vue // 编辑页
4. 高级功能与自定义配置
4.1 主子表代码生成
适用于订单-订单明细等一对多关系场景:
- 配置主子表关系
GenTable table = new GenTable();
table.setTableName("sys_order"); // 主表
table.setChildTableName("sys_order_item"); // 子表
table.setMainField("order_id"); // 主表关联键
table.setChildField("order_id"); // 子表关联键
- 生成效果
系统会自动生成包含子表操作的CRUD代码,在主表表单中嵌入子表表格,并实现数据联动。
4.2 代码模板自定义
- 模板文件位置
自定义模板文件需放置在项目的src/main/resources/templates目录下,支持Velocity语法:
templates/
├── controller.java.vm // Controller模板
├── service.java.vm // Service接口模板
├── serviceImpl.java.vm // Service实现模板
└── entity.java.vm // 实体类模板
- 自定义示例:扩展实体类注释
修改entity.java.vm模板:
/**
* ${tableComment}
*
* @author ${author}
* @email ${email}
* @date ${datetime}
* @since ${version}
*/
public class ${className} extends BaseEntity {
#foreach($field in $fieldList)
/**
* ${field.comments}
*/
private ${field.javaType} ${field.javaField};
#end
}
4.3 多租户适配
系统自动检测表中是否包含tenant_id字段,如存在则自动生成多租户相关代码:
// 生成的实体类会自动添加租户注解
@Data
@TableName("sys_user")
public class SysUser {
@TableId(type = IdType.ASSIGN_ID)
private Long id;
private String username;
// 多租户字段
@TableField("tenant_id")
private Long tenantId;
}
// Service实现类会自动添加租户条件
@Override
public Page<SysUser> selectPage(Page<SysUser> page, SysUserQuery query) {
return baseMapper.selectPage(page,
new QueryWrapper<SysUser>()
.eq("tenant_id", SecurityUtils.getTenantId())
.like(StrUtil.isNotBlank(query.getUsername()), "username", query.getUsername())
);
}
5. 常见问题与最佳实践
5.1 常见问题解决
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 生成代码报类找不到 | 基础包名配置错误 | 检查packageName是否正确,确保与项目结构一致 |
| 数据库表无法加载 | 数据源配置错误 | 检查JDBC URL和 credentials,测试数据库连接 |
| 前端页面样式错乱 | 代码风格选择错误 | 根据实际使用的UI框架选择正确的style参数 |
| 生成文件路径错误 | 路径配置错误 | 调整backendPath和frontendPath参数 |
5.2 最佳实践
- 统一代码规范
// 在GenConfig中统一配置基础参数
@Configuration
public class CodeGenConfig {
@Bean
public GenConfig genConfig() {
GenConfig config = new GenConfig();
config.setPackageName("com.pig4cloud.pig");
config.setAuthor("team@pig4cloud.com");
config.setStyle("1"); // 统一使用element-ui风格
return config;
}
}
- 模板版本控制
将自定义模板纳入Git版本控制,确保团队使用统一模板:
# 添加模板文件到版本控制
git add src/main/resources/templates/*.vm
git commit -m "feat: add custom code templates"
- 生成代码Review机制
建立生成代码的Code Review机制,重点关注:
- 权限控制是否完善
- 业务逻辑是否符合需求
- 字段验证是否完整
- 性能考虑(如分页、索引等)
6. 总结与展望
pig代码生成器通过标准化、自动化的方式,极大提升了开发效率,减少了重复劳动。本文详细介绍了从环境准备到高级配置的完整流程,涵盖了日常开发中的大部分场景。
随着pig系统的不断迭代,代码生成器将支持更多功能:
- AI辅助字段注释生成
- 前后端一体化生成
- 微服务架构代码生成
- 低代码平台集成
掌握代码生成器的使用,将使你在pig生态开发中如虎添翼。立即尝试,体验5分钟构建完整业务模块的高效开发方式!
提示:生成代码后,记得执行
mvn clean compile命令编译项目,并解决可能的依赖冲突。如需前端代码生效,需在pig-ui目录下执行npm install安装依赖。
附录:常用配置参数速查表
| 参数类别 | 参数名 | 说明 | 默认值 |
|---|---|---|---|
| 基础配置 | packageName | 基础包名 | com.pig4cloud.pig |
| moduleName | 模块名 | admin | |
| author | 作者 | lengleng | |
| 生成配置 | style | 代码风格 | 1(element-ui) |
| formLayout | 表单布局 | 2(两列) | |
| generatorType | 生成方式 | 0(zip下载) | |
| 路径配置 | backendPath | 后端路径 | pig |
| frontendPath | 前端路径 | pig-ui | |
| 数据源配置 | dsName | 数据源名称 | mysql_dev |
| dbType | 数据库类型 | MYSQL |
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



