# g2rain-generator-maven-plugin(Java 代码生成器插件)

g2rain-generator-maven-plugin 是基于 MyBatis GeneratorFreeMarker 的 Java 代码生成 Maven 插件,可根据数据库表结构一键生成标准化 CRUD 代码(常见包含 API / DTO / VO / Service / Controller / DAO / PO / Mapper XML 等分层)。

插件强调跨项目协作中的“读写分离”实践:默认生成查询类接口;新增/更新/删除建议由业务方通过事件/消息或其它服务独立完成,减少跨项目耦合副作用。

# 功能特性

  • 一键生成:通过 Maven 命令自动生成整套 CRUD 分层代码
  • 多层分层:支持 API、Controller、Service、DAO、PO、DTO、VO 等完整结构
  • 模板驱动:基于 FreeMarker 模板,可按需定制生成内容
  • 多种配置方式:配置文件、命令行参数、交互式输入
  • 多表生成:一次生成多个表(逗号分隔)
  • 可控覆盖:支持是否覆盖已存在的文件
  • 标准结构:默认生成符合 Spring Boot 项目习惯的包与模块结构

# 典型生成结构(示例)

demo-project、基础包 com.g2rain.demo、多模块结构为例:

demo-project/
├── demo-project-api/                  # api/ dto/ vo/
├── demo-project-biz/                  # controller/ service/ dao/ converter/ ...
└── demo-project-biz/                 # mybatis/mapper/ 位置的 Mapper XML

# 快速开始

# 1. 引入插件

业务项目(建议父工程)pom.xml 添加:

<build>
  <plugins>
    <plugin>
      <groupId>com.g2rain</groupId>
      <artifactId>g2rain-generator-maven-plugin</artifactId>
      <version>1.0.1</version>
    </plugin>
  </plugins>
</build>

# 2. 准备 codegen.properties(推荐)

在项目根目录创建 codegen.properties(示例):

database.url=jdbc:mysql://localhost:3306/my_database?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
database.driver=com.mysql.cj.jdbc.Driver
database.username=root
database.password=your_password

project.basePackage=com.example.demo
database.tables=user,order_info
tables.overwrite=false

# 3. 执行生成

在包含 pom.xml 的目录执行:

mvn com.g2rain:g2rain-generator-maven-plugin:1.0.1:generate

也可以直接传参(覆盖配置文件):

mvn com.g2rain:g2rain-generator-maven-plugin:1.0.1:generate \
  -Dproject.basePackage=com.example.demo \
  -Ddatabase.url=jdbc:mysql://... \
  -Ddatabase.driver=com.mysql.cj.jdbc.Driver \
  -Ddatabase.username=root \
  -Ddatabase.password=123456 \
  -Ddatabase.tables=user,order_info \
  -Dtables.overwrite=true