# code-generator-maven-plugin
**Repository Path**: LLabs/code-generator-maven-plugin
## Basic Information
- **Project Name**: code-generator-maven-plugin
- **Description**: 基于数据库表生成Controller, Service, entity, Dao CRUD代码的maven插件。支持 Mybatis, Mybatis-Plus, JPA。还支持生成 Dockerfile 文件以及相关 Docker 脚本:DockerImageBuild.bat, DockerImageBuildRun.bat, DockerImageDelete.bat
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://mengweijin.gitee.io/
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 6
- **Created**: 2023-08-18
- **Last Updated**: 2023-08-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# code-generator-maven-plugin
Language: [English](README.md)
## 简介
code-generator-maven-plugin 是一个基于baomidou mybatis-plus-generator实现的,在 Maven 项目中生成代码的 Maven 插件。主要包括:
- code-generator:**MyBatis**:基于数据库表生成 Mybatis 下的 Controller.java, Service.java, Mapper.java, mapper.xml, Entity.java 层CRUD代码;
- code-generator:**MyBatis-Plus**:基于数据库表生成 Mybatis-plus 下的 Controller.java, Service.java, Mapper.java, mapper.xml, Entity.java 层CRUD代码;
- code-generator:**JPA**:基于数据库表生成 Jpa 下的 Controller.java, Service.java, Repository.java, Entity.java 层CRUD代码;
- code-generator:**Customer**:基于数据库表生成CRUD代码,可以指定自定义模板位置;
- code-generator:**Dockerfile**:生成当前项目的 Dockerfile 文件,以及相关脚本:DockerImageBuild.bat, DockerImageBuildRun.bat, DockerImageDelete.bat
- code-generator:**Docker-Build**:基于本地安装的 Docker 来构建 docker image
- code-generator:**Docker-Deploy**:基于本地安装的 Docker 来构建 docker image 并部署 docker 容器
- code-generator:**Docker-Delete**:基于本地安装的 Docker 来删除已经部署的 docker 容器和 docker image
- 理论可以扩展任意前后台跟数据库表有关系的技术:如:Vue, Element-UI 代码等。
- 理论支持所有支持JDBC连接的数据库:例如:DB2, DM, H2, Mariadb, MySQL, Oracle, Postgre, Sqlite, SQLServer
### SpringBoot 代码生成器
[generator-spring-boot-starter](https://gitee.com/mengweijin/vitality)
## 如何使用?
在Intellij IDEA 的 Maven 模块中找到下面图中的 code-generator 插件,然后双击对应的插件命令即可。

**注意**
* 默认 Java 代码生成在当前工程的 target/code-generator/ 目录下。
* 默认包路径为:com.github.mengweijin
* 默认 Dockerfile 等文件生成在当前工程的 target 目录下。
* Customer 插件必须配置 templateLocation 参数,默认 templateType 参数值为 beetl。
## 生成 java 代码
### 1. 一般使用
在标准 SpringBoot 项目,以开发工具 Intellij IDEA 为例:在 Maven 中引入 code-generator-maven-plugin 插件
~~~~xml
com.github.mengweijin
code-generator-maven-plugin
Latest Version
sys_user, sys_role
com.github.mengweijin.quickboot.mybatis.BaseEntity
~~~~
### 2. 全部配置使用
~~~~xml
com.github.mengweijin
code-generator-maven-plugin
Latest Version
com.github.mengweijin
mengweijin
root
root
jdbc:mysql://192.168.83.128:3306/mwj_cms
sys_user, rlt_user_role
sys_, rlt_
com.github.mengweijin.BaseEntity
true
D:\code-generator-maven-plugin\src\main\resources\templates
beetl
~~~~
## 参数配置说明
| 参数名称 | 是否必填 | 配置示例 | 说明 |
|-----------------:|:-----|:------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------|
| outputPackage | 否 | com.github.mengweijin | 代码生成的包路径。 默认:com.github.mengweijin |
| author | 否 | mengweijin | 类注释上面@author的值。 默认:取当前电脑的用户名 |
| dbInfo.username | 否 | root | 数据库连接信息。如果是标准的SpringBoot工程,可以省略,会自动读取application.yml/yaml/properties文件。 |
| dbInfo.password | 否 | root | 同上 |
| dbInfo.url | 否 | jdbc:mysql://192.168.83.128:3306/test | 同上。注意:如果是多模块项目使用 H2 数据库生成代码时,要注意 URL 的书写方式,详情参考**常见问题**章节 |
| tables | 否 | sys_user, rlt_user_role | 要生成代码对应的数据库表名称。如果不配置,会生成数据库中所有的表。部分数据库对表名称大小写敏感,此时需要配置的表名称跟数据库中的完全一致。多个表名称使用英文逗号分隔 |
| tablePrefix | 否 | sys_, rlt_ | 要生成代码对应的数据库表名称的前缀。配置后,生成的entity类就不会带有表前缀了。如:User, UserRole。如果不配置,生成的entity类就会带有表前缀。如:SysUser, RltUserRole。多个表名称前缀使用英文逗号分隔 |
| superEntityClass | 否 | com.github.mengweijin.quickboot.mybatis.BaseEntity | 生成的entity类继承的父类 |
| lombokModel | 否 | true | 生成的entity是否启用lombok方式。不配置或者配置为true: 启用lombok方式;配置为false: 不启用lombok方式,则生成的entity中包含getter/setter/toString方法。 |
| templateLocation | 是 | D:\code-generator-maven-plugin\src\main\resources\templates | 仅Customer插件参数,用户自定义模板位置。如果用户想自己编写生成代码的模板文件,可以用Customer插件,并配置模板文件所在的文件夹的绝对路径。比如:可以放到你工程代码的 resources/generator/ 目录下。 |
| templateType | 否 | beetl | 仅Customer插件参数,用户自定义模板类型。非必填,可选值为:"beetl, velocity, freemarker",对应的模板后缀为:"btl, vm, ftl"。不配置的话默认值为:beetl,即模板后缀应该为 .btl 结尾。 |
## 常见问题
1. 数据库表存在,但没有生成代码文件,程序也没有报错。
* 配置数据库表名称(tables)一定要跟数据库中的表名称大小写完全一致。例如H2数据库用脚本创建表时的脚本中写的名称是小写,但真实生成的表名称可能是大写的,因此这里需要配置为大写的表名称。
2. 多模块项目使用 H2 数据库生成代码时,提示“表\[table_name]在数据库中不存在!!!” 的问题。
* 项目结构为多模块时,项目结构如下:
````txt
- project-parent
- h2
- test.mv.db
- project-child
- src
- main
- java
- resources
- pom.xml(code-generator-maven-plugin 在这里配置的)
- pom.xml(project-parent 的)
````
* 可以发现,/h2/test.mv.db 文件在整个项目的根路径下
* 我们程序中配置的 url 为 jdbc:h2:file:./h2/test;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL
* 当使用 code-generator-maven-plugin 时,就不能配置上面的 url 了, 因为多模块项目中的插件的根路径为 project-child 的,并不是 /h2/test.mv.db 文件所在的位置
* 此时我们可以使用以下两种方式来手动指定:
* 使用绝对路径:jdbc:h2:file:C:/Source/code/gitee/quickboot/h2/test;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL
* 使用相对路径(多加了一层 ../ 符号):jdbc:h2:file:./../h2/test;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL
* 注意:只用多模块项目才需要这样指定,单个项目不受影响。
3. 如何自定义模板?
* 参考 code-generator-maven-plugin工程下,src\main\resources\templates 目录下的模板文件。用的 btl 后缀,当然你也可以改为其他的,参考 templateType 参数说明。
* 注意文件命名,分为三段,第一段为生成的文件的名称的一部分;第二段为生成的文件的后缀;第三部分为模板类型后缀;
* 模板内容参数:参考已有的各个模板文件内容,你能用到底里面基本都有,直接使用即可。
## 期望
欢迎您提出更好的意见,帮助完善这个小插件.
## 贡献
欢迎您贡献代码,让更多的人多点时间陪陪关心的人。