# generator-maven-plugin
**Repository Path**: acomma/generator-maven-plugin
## Basic Information
- **Project Name**: generator-maven-plugin
- **Description**: 一个适用于 MySQL 数据库的基于 Velocity 模板引擎的代码生成插件.
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-07-18
- **Last Updated**: 2022-08-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
一个适用于 [MySQL](https://www.mysql.com/) 数据库的基于 [Velocity](http://velocity.apache.org/) 模板引擎的代码生成插件.
### 使用方法
1. 下载代码
```
git clone https://gitee.com/acomma/generator-maven-plugin.git
```
2. 本地安装
```
mvn install
```
3. 配置插件
```xml
me.acomma
generator-maven-plugin
1.0.0-SNAPSHOT
```
4. 添加配置文件 `generator/generator.properties`
```properties
jdbc.driver-class-name=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/groot?characterEncoding=UTF-8&serverTimezone=GMT%2B8
jdbc.username=root
jdbc.password=123456
table.name=t_user
table.prefix=t_
package.name=me.acomma.groot.generator
```
5. 在目录 `generator/templates` 下编写 Velocity 模板
6. 执行插件命令
### 对象说明
#### $tableInfo
属性 | 说明
--- | ---
original | 原始的表对象 `Table`
name | 已转换为 CamelCase 格式的表名, 比如 `User`
wholeColumns | 所有的列信息 `List`
primaryColumns | 所有的主键列信息 `List`
otherColumns | 除了主键列以外的其他列信息 `List`
prefix | 表的前缀
packageName | 包名
packagePath | 包路径, 由包名转换而来, 比如包名 `me.acomma.generator` 转成包路径 `me/acomma/generator`
autoImportJavaTypes | 自动导入的 Java 类型, `ColumnInfo` 中除 `java.lang` 开头的所有 Java 类型
#### ColumnInfo
属性 | 说明
--- | ---
original | 原始的列对象 `Column`
name | 已转换为 camelCase 格式的列名, 比如 `userId`
jdbcType | 列的 JDBC 类型, 比如 `VARCHAR`
javaType | 列的 Java 类型, 比如 `java.lang.String`
shortJavaType | 去掉包名后的 Java 类型, 比如 `String`
#### Table
属性 | 说明
--- | ---
tableName | 表的名字
tableComment | 表的注释
columns | 表的列 `List`
#### Column
属性 | 说明
--- | ---
columnName | 列的名字
ordinalPosition | 列的顺序
dataType | 列的数据类型
columnType | 列的类型
columnKey | 列的主键标识
columnComment | 列的注释
#### $fileInfo
属性 | 说明
--- | ---
savePath | 保存路径, 默认值 `${project.basedir}/src/main/java/${package.name}`
filename | 文件名, 默认值为 `$tableInfo.name` 拼接模板文件的名称后移除后三个字符, 比如 `$tableInfo.name` 值为 `User`, 模板文件名 `Service.java.vm`, 则默认文件名 `UserService.java`
content | 文件内容
#### $utils
方法 | 说明
--- | ---
snakeCase2CamelCase(String snakeCase) | 比如 `user_id` 转为 `userId`
snakeCase2PascalCase(String snakeCase) | 比如 `user_id` 转为 `UserId`
pascalCase2CamelCase(String pascalCase) | 比如 `UserId` 转为 `userId`
camelCase2PascalCase(String camelCase) | 比如 `userId` 转为 `UserId`
removePrefix(String str, String prefix) | 比如 `t_user` 移除前缀 `t_` 后变为 `user`
concat(String... strings) | 比如 `user` 和 `Id` 两个字符串拼接称 `userId`