Jooq不同的环境

时间:2019-02-03 12:41:54

标签: mysql java-8 jooq

我在应用程序中将MySQL与Jooq一起使用。我们的发布管道遵循dev-> stage-> prod。

每个环境都具有相同的架构,但问题是,它们可能具有以下变量:

  1. 它们可能具有不同的数据库名称(dev_db,stage_db,prod_db)
  2. 他们可能具有不同的数据库URL和凭据

目前,我得到了以下代码。

public static void init() {

    Target l_target =   new Target();
    System.out.println("My directory is::"+l_target.getPackageName());
    l_target.setDirectory("src/main/java");
    l_target.setPackageName("com.my.paas.css.entity");
    Configuration configuration = new Configuration()
            .withJdbc(new Jdbc()
                    .withDriver("com.mysql.jdbc.Driver")
                    .withUrl("jdbc:mysql://localhost:3306/paas")
                    .withUser("root"))
            .withGenerator(new Generator()
                    .withDatabase(new Database()
                            .withName("org.jooq.meta.mysql.MySQLDatabase")
                            .withIncludes(".*")
                            .withExcludes("")
                            .withInputSchema("paas"))
                    .withTarget(l_target));

    try {
        GenerationTool.generate(configuration);
    } catch (Exception ex) {
        System.out.println();
        ex.printStackTrace();
    }
}

我想了解,如何使代码生成适应环境?

1 个答案:

答案 0 :(得分:0)

程序配置

您已经在使用程序代码生成配置,因此对您的配置元素进行修改应该很简单。例如,为了为给定的数据库连接选择正确的JDBC URL,您将使用局部变量或方法,而不是对URL进行硬编码:

// Instead of
.withUrl("jdbc:mysql://localhost:3306/paas")

// write...
.withUrl(jdbcUrl())

并根据环境实施jdbcUrl()

映射架构

您可能要研究的另一个功能集是可以应用的架构映射功能:

请注意,检入生成的代码并从中构建库,而不是在每个环境中重新生成代码,这并非不常见。