148 lines
4.1 KiB
Markdown
148 lines
4.1 KiB
Markdown
# 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 查询语句和驱动配置。 |