# Play Generator - 代码生成器

这是一个独立的代码生成器工具，可以通过 main 方法直接运行生成代码。

## 功能特性

- 支持 MySQL 数据库表结构读取
- 自动生成 Entity、Mapper、Service、Controller 等代码文件
- 基于 Velocity 模板引擎
- 支持批量生成多个表
- 可自定义输出目录和包名

## 使用方法

提供两种方式来使用代码生成器：

### 方式一：使用配置文件（推荐）

#### 1. 修改配置文件

编辑 `src/main/resources/config.properties` 文件：

```properties
# 数据库配置
db.url=jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
db.driver=com.mysql.cj.jdbc.Driver
db.username=your_username
db.password=your_password

# 代码生成配置
gen.author=your_name
gen.packageName=com.your.package
gen.outputDir=./generated-code
gen.autoRemovePre=false
gen.tablePrefix=sys_
gen.tplCategory=crud

# 要生成的表名，多个表名用逗号分隔
gen.tableNames=your_table1,your_table2,your_table3
```

#### 2. 运行生成器

直接运行 `MainGeneratorWithConfig.main()` 方法或使用脚本：
- Windows: 双击 `run.bat`
- Linux/Mac: 执行 `./run.sh`

### 方式二：代码配置

#### 1. 配置数据库连接

编辑 `MainGenerator.java` 文件中的数据库配置：

```java
// 数据库配置
GeneratorConfig config = new GeneratorConfig();
config.setUrl("jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai");
config.setDriverName("com.mysql.cj.jdbc.Driver");
config.setUsername("your_username");
config.setPassword("your_password");
```

#### 2. 配置生成参数

```java
// 生成配置
config.setAuthor("your_name");
config.setPackageName("com.your.package");
config.setOutputDir("./generated-code");
config.setAutoRemovePre(false);
config.setTablePrefix("sys_");
```

#### 3. 指定要生成的表名

```java
// 要生成的表名（可以配置多个）
String[] tableNames = {
    "your_table1",
    "your_table2",
    "your_table3"
};
```

### 4. 运行生成器

#### 方式一：通过 Maven 运行
```bash
mvn clean compile exec:java
```

#### 方式二：通过 IDE 运行
直接运行 `MainGenerator.main()` 方法

#### 方式三：打包后运行
```bash
mvn clean package
java -cp target/classes:target/lib/* com.starry.generator.MainGenerator
```

## 生成的代码结构

```
generated-code/
├── src/main/java/com/your/package/
│   ├── entity/          # 实体类
│   ├── mapper/          # Mapper 接口
│   ├── service/         # Service 接口
│   ├── service/impl/    # Service 实现类
│   └── controller/      # Controller 类
└── src/main/resources/
    └── mapper/          # MyBatis XML 文件
```

## 配置参数说明

| 参数 | 说明 | 默认值 |
|------|------|--------|
| url | 数据库连接地址 | - |
| driverName | 数据库驱动类名 | com.mysql.cj.jdbc.Driver |
| username | 数据库用户名 | - |
| password | 数据库密码 | - |
| author | 代码作者 | admin |
| packageName | 生成代码的包名 | com.starry.play |
| outputDir | 代码输出目录 | ./generated-code |
| autoRemovePre | 是否自动移除表前缀 | false |
| tablePrefix | 表前缀 | sys_ |
| tplCategory | 模板类型(crud/tree/sub) | crud |

## 注意事项

1. **重要**：首次使用前，请修改 `src/main/resources/config.properties` 文件中的数据库连接信息
2. 确保数据库连接正常，数据库服务器可访问
3. 确保指定的表存在于数据库中
4. 生成的代码会覆盖同名文件，请注意备份
5. 支持的数据库类型：MySQL 5.7+
6. 确保数据库用户有足够的权限读取表结构信息

## 常见问题

### Q: 如何自定义模板？
A: 模板文件位于 `src/main/resources/vm/` 目录下，可以根据需要修改 `.vm` 文件。

### Q: 如何修改生成的文件结构？
A: 修改 `CodeGenerator.getFileName()` 方法中的文件路径逻辑。

### Q: 支持其他数据库吗？
A: 目前只支持 MySQL，如需支持其他数据库，需要修改 SQL 查询语句和驱动配置。 