# 快速开始

# 1. 引入依赖

# 1. 此处以 maven 项目为例:首先引入 maven 依赖:

<dependency>
    <groupId>com.github.zhuyizhuo</groupId>
    <artifactId>code-generator</artifactId>
    <version>最高版本</version>
</dependency>

# 2. 其次引入对应数据库驱动,以 mysql 数据库为例:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>x.x.x</version>
</dependency>

# 2. 配置文件方式

# 第一步:新增配置文件

src/main/resources 目录下新建配置文件,如 config.properties,添加以下配置信息:

########## 必选配置 start ###########
# 数据库配置  可选值 MYSQL ORACLE, 以 MYSQL 为例
db.type=MYSQL
# 驱动包路径
db.driver=com.mysql.cj.jdbc.Driver
# 数据库链接 需改为你的数据库链接
db.url=jdbc:mysql://localhost:3306/test?useUnicode=true&serverTimezone=Asia/Shanghai
# 表空间 如 sql 为 select * from github.demo; 则 github 为表空间
db.table-schema=test
# 数据库用户名
db.username=你的数据库用户名
# 数据库密码
db.password=你的数据库密码
########## 必选配置 end ###########

# 指定生成的表 多张表用英文逗号隔开,大小写不敏感,不配置则默认为 db.table-schema 下的全部表
generate.table-names=table1,table2
# java 类生成的公共包路径 示例:
generate.base.package=com.github

# 作者 默认  @author : TODO
generate.java.comment.author=TODO

# 第二步:代码生成

创建 Java 类,执行 main 方法,即可生成代码。

/**
 * 生成器使用
 */
public class TestGenerator {

	public static void main(String[] args) throws Exception {
		/** 
		 *  此处使用 配置文件的绝对路径或者在项目中的相对路径,
		 *  传参如下,则默认在项目的 src/main/resources 文件夹下查找加载 config.properties
		 */
      Generator generator = new GeneratorBuilder().build("config.properties");
		  generator.generate();
	}
}

# 3. 无需配置文件方式

# 第一种方式

创建 SimpleJavaGenerator 类如下:

public class SimpleJavaGeneratorDemo {

    public static void main(String[] args) {
        /** [必选]数据库配置 可选值参考 DbTypeEnums */
        DbTypeEnums type= DbTypeEnums.MYSQL;
        /** [必选]驱动包路径 */
        String driver= "com.mysql.cj.jdbc.Driver";
        /** [必选]数据库链接 需改为你的数据库链接 */
        String url= "jdbc:mysql://localhost:3306/management?useUnicode=true&serverTimezone=Asia/Shanghai";
        /** [必选]表空间 如 sql 为 select * from management.demo; 则 management 为表空间 */
        String tableSchema= "你的数据库表空间";
        /** [必选]数据库用户名  */
        String username= "你的数据库用户名";
        /** [必选]数据库密码  */
        String password= "你的数据库密码";

        /** [建议]要生成的表名 多个可用英文逗号隔开; 缺省为当前表空间下所有表; mysql 数据库表名大小写敏感 */
        String tableName = "你要生成的表名";
        /** [建议]生成类所在的基础包路径 */
        String basePackage = "com.generator";
        /** [建议]生成的代码注释 作者 缺省值为 TODO */
        String author = "作者";
        
        /** [可选]可设置基础生成路径,默认生成至系统变量 user.dir 路径下,可修改为指定路径 */
        String outPath = System.getProperty("user.dir") + "/generator";
        Generator generator = new GeneratorBuilder()
                .properties("db.type=" + type.name())
                .properties("db.driver=" + driver)
                .properties("db.url=" + url)
                .properties("db.table-schema=" + tableSchema)
                .properties("db.username=" + username)
                .properties("db.password=" + password)
                .properties("generate.table-names=" + tableName)
                .properties("generate.base.package=" + basePackage)
                .properties("generate.java.comment.author=" + author)
                .properties("generate.base.out-put-path=" + outPath)
                .build();
        generator.generate();
    }

}

# 第二种方式


public class SimpleJavaGenerator {

    public static void main(String[] args) {
        /** [必选]数据库配置 可选值参考 DbTypeEnums */
        DbTypeEnums type= DbTypeEnums.MYSQL;
        /** [必选]驱动包路径 */
        String driver= "com.mysql.cj.jdbc.Driver";
        /** [必选]数据库链接 需改为你的数据库链接 */
        String url= "jdbc:mysql://localhost:3306/management?useUnicode=true&serverTimezone=Asia/Shanghai";
        /** [必选]表空间 如 sql 为 select * from management.demo; 则 management 为表空间 */
        String tableSchema= "你的数据库表空间";
        /** [必选]数据库用户名  */
        String username= "你的数据库用户名";
        /** [必选]数据库密码  */
        String password= "你的数据库密码";

        /** [建议]要生成的表名 多个可用英文逗号隔开; 缺省为当前表空间下所有表; mysql 数据库表名大小写敏感 */
        String tableName = "你要生成的表名";
        /** [建议]生成类所在的基础包路径 */
        String basePackage = "com.generator";
        /** [建议]生成的代码注释 作者 缺省值为 TODO */
        String author = "作者";
        
        /** [可选]可设置基础生成路径,默认生成至系统变量 user.dir 路径下,可修改为指定路径 */
        String outPath = System.getProperty("user.dir") + "/generator";
        Map<String, String> properties = new HashMap<>();
        properties.put("db.type", type.name());
        properties.put("db.driver", driver);
        properties.put("db.url", url);
        properties.put("db.table-schema", tableSchema);
        properties.put("db.username", username);
        properties.put("db.password", password);
        properties.put("generate.table-names", tableName);
        properties.put("generate.base.package", basePackage);
        properties.put("generate.java.comment.author", author);
        properties.put("generate.base.out-put-path", outPath);

        Generator generator = new GeneratorBuilder()
                .properties(properties)
                .build();
        generator.generate();
    }
}

# 最佳实践

将不常修改的信息放在配置文件,经常变更的信息使用 Java 配置。

# 配置文件,以 mysql 为例

## 数据库信息  必须配置
db.type=MYSQL
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/test?useUnicode=true&serverTimezone=Asia/Shanghai
db.table-schema=test
db.username=你的数据库用户名
db.password=你的数据库密码

# java 类生成的公共包路径
generate.base.package=com.github
# 作者
generate.java.comment.author=Mr.Li

# 代码

public class SimpleGenerator {

    public static void main(String[] args) {
        /** [建议]要生成的表名 多个可用英文逗号隔开; 缺省为当前表空间下所有表; mysql 数据库表名大小写敏感 */
        String tableName = "你要生成的表名";
        /** [可选]可设置基础生成路径,默认生成至系统变量 user.dir 路径下,可修改为指定路径 */
        String outPath = System.getProperty("user.dir") + "/generator";

        Generator generator = new GeneratorBuilder()
                .properties("generate.table-names=" + tableName)
                .properties("generate.base.out-put-path=" + outPath)
                .build("config.properties");
        generator.generate();
    }

}