pig系统快速开发指南:代码生成器使用教程

pig系统快速开发指南:代码生成器使用教程

【免费下载链接】pig ↥ ↥ ↥ 点击关注更新,基于 Spring Cloud 2022 、Spring Boot 3.1、 OAuth2 的 RBAC 权限管理系统 【免费下载链接】pig 项目地址: https://gitcode.com/gh_mirrors/pi/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 代码生成器架构设计

mermaid

核心组件说明:

  • 数据源管理:支持MySQL、Oracle等多种数据库,通过dsName区分不同数据源
  • 模板引擎:基于Velocity实现代码动态渲染,支持自定义模板
  • 生成策略:通过style参数控制不同UI框架(avue/element/uview)的代码生成
  • 配置中心:通过PigCodeGenDefaultProperties管理默认生成参数

2. 环境准备与依赖配置

2.1 系统要求

环境版本要求检查命令
JDK17+java -version
Maven3.6+mvn -version
Node.js14+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 数据源配置

  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"
}
  1. 验证数据源连接

系统会自动测试连接可用性,确保数据库服务正常且网络可达。

3.2 表结构选择与配置

  1. 选择数据表

在代码生成->表管理中,选择目标数据源(如mysql_dev),勾选需要生成代码的表:

mermaid

  1. 配置生成参数
参数名说明示例值
packageName基础包名com.pig4cloud.pig
moduleName模块名admin
functionName功能名用户管理
author作者lengleng
email邮箱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 代码生成与预览

  1. 预览代码

点击"预览"按钮,系统会返回生成的代码文件列表:

[
  {
    "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}"
  }
]
  1. 生成代码

根据需求选择生成方式:

  • 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 主子表代码生成

适用于订单-订单明细等一对多关系场景:

  1. 配置主子表关系
GenTable table = new GenTable();
table.setTableName("sys_order");           // 主表
table.setChildTableName("sys_order_item"); // 子表
table.setMainField("order_id");            // 主表关联键
table.setChildField("order_id");           // 子表关联键
  1. 生成效果

系统会自动生成包含子表操作的CRUD代码,在主表表单中嵌入子表表格,并实现数据联动。

4.2 代码模板自定义

  1. 模板文件位置

自定义模板文件需放置在项目的src/main/resources/templates目录下,支持Velocity语法:

templates/
├── controller.java.vm       // Controller模板
├── service.java.vm          // Service接口模板
├── serviceImpl.java.vm      // Service实现模板
└── entity.java.vm           // 实体类模板
  1. 自定义示例:扩展实体类注释

修改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参数
生成文件路径错误路径配置错误调整backendPathfrontendPath参数

5.2 最佳实践

  1. 统一代码规范
// 在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;
    }
}
  1. 模板版本控制

将自定义模板纳入Git版本控制,确保团队使用统一模板:

# 添加模板文件到版本控制
git add src/main/resources/templates/*.vm
git commit -m "feat: add custom code templates"
  1. 生成代码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

【免费下载链接】pig ↥ ↥ ↥ 点击关注更新,基于 Spring Cloud 2022 、Spring Boot 3.1、 OAuth2 的 RBAC 权限管理系统 【免费下载链接】pig 项目地址: https://gitcode.com/gh_mirrors/pi/pig

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值