---
title: 代码生成器插件
tags: [代码生成器插件,数据持久化, MyBatis, MyBatis-Plus,盘古简介,盘古架构]
sidebar_position: 30
slug: /code-generator
---
<head>
  <title>盘古开发框架 | 代码生成器插件</title>
  <meta name="keywords" content="盘古开发框架 | 代码生成器插件" />
</head>

盘古代码生成器是基于 Maven 的一个自定义插件。可以方便快捷的以插件的方式安装到任何一个 Maven 模块中去。目前支持生成如下代码。
- MyBatis Plus Mapper.java 映射接口文件
- MyBatis Plus Entity.java 实体文件

:::caution 建议
根据实践经验，不建议使用 MyBatis Plus 的生成器，更不建议生成 Mybatis Plus 风格的 Service 文件。
:::

## 安装 Maven 插件
```jsx title="pom.xml"
<plugin>
    <groupId>com.gitee.pulanos.pangu</groupId>
    <artifactId>pangu-framework-generator-maven-plugin</artifactId>
    <version>5.0.6</version>
    <configuration>
        <url>jdbc:mysql://127.0.0.1:3306/pangu-showcases</url>
        <user>root</user>
        <password>root123456</password>
        <tables>user,resource</tables>
        <author>xiongchun</author>
        <entityFilePath>${project.basedir}/src/main/java/com/gitee/pulanos/pangu/showcases/crud/dao/entity</entityFilePath>
        <mapperFilePath>${project.basedir}/src/main/java/com/gitee/pulanos/pangu/showcases/crud/dao/mapper</mapperFilePath>
    </configuration>
</plugin>
```

### 插件参数说明

|<div style={{width:'120px'}}>配置项</div> | 配置说明
--- | --- 
url | 数据库连接地址
user | 数据库用户名
password | 数据库密码
tables | 目标数据库表，多个表用逗号分割
author | 源代码文件的作者签名
entityFilePath | 实体类文件输出路径（根据此路径推导包结构）
mapperFilePath | Mapper 类文件输出路径（根据此路径推导包结构）

:::tip 提示
- 上表中输出路径参数可以是基于 ${project.basedir} 的相对路径，也可以是绝对路径。
- 微服务开发中实体类文件一般是生成到服务接口包里，与服务消费方共享。（可以在接口包模块安装此插件，或者在服务实现模块将实体类生成路径直接指向接口包）
:::

## 运行Maven插件
### 方式一
通过 IDEA 或 Eclipse 等开发工具来执行名为 `pangu` 的 Maven 插件。如下图所示。

<img width="500"
  src={require('/resources/doc/13-pangu-framework-generator.png').default}
  alt="盘古代码生成器" />

### 方式二
通过 Mavne 脚本执行。如下所示。

```jsx title="命令行脚本"
cd pom.xml所在的更目录
mvn pangu:generate
```

### 输出结果
```jsx title="控制台输出日志"
xc@xc-mac pangu-examples-crud % mvn pangu:generate
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------< com.gitee.pulanos.pangu:pangu-examples-crud >-------------
[INFO] Building pangu-examples-crud 1.0.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- pangu-framework-generator-maven-plugin:5.0.6:generate (default-cli) @ pangu-examples-crud ---
[INFO] 开始生成数据表[user]对应的实体对象...
[INFO] UserEntity.java 生成成功。文件路径：/Users/xc/git2/pangu-framework/pangu-examples/pangu-examples-crud/src/main/java/com/gitee/pulanos/pangu/showcases/crud/dao/entiity.java
[INFO] 开始生成数据表[user]对应的数据访问接口...
[INFO] UserMapper.java 生成成功。文件路径：/Users/xc/git2/pangu-framework/pangu-examples/pangu-examples-crud/src/main/java/com/gitee/pulanos/pangu/showcases/crud/dao/mapper/UserMapper.java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.291 s
[INFO] Finished at: 2021-11-15T21:54:22+08:00
[INFO] ------------------------------------------------------------------------
```


## 本文相关范例源码
- [pangu-examples-crud](https://gitee.com/pulanos/pangu-framework/tree/master/pangu-examples/pangu-examples-crud)：数据持久化参考范例（含代码生成器演示）
- [pangu-examples-dubbo-api](https://gitee.com/pulanos/pangu-framework/tree/master/pangu-examples/pangu-examples-dubbo-api)：服务接口包（含代码生成器演示）

## 下一步
继续阅读其它章节获取你想要的答案或通过我们的 [开发者社区](/community) 寻求更多帮助。

