我在应用程序中将MySQL与Jooq一起使用。我们的发布管道遵循dev-> stage-> prod。
每个环境都具有相同的架构,但问题是,它们可能具有以下变量:
目前,我得到了以下代码。
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();
}
}
我想了解,如何使代码生成适应环境?
答案 0 :(得分:0)
您已经在使用程序代码生成配置,因此对您的配置元素进行修改应该很简单。例如,为了为给定的数据库连接选择正确的JDBC URL,您将使用局部变量或方法,而不是对URL进行硬编码:
// Instead of
.withUrl("jdbc:mysql://localhost:3306/paas")
// write...
.withUrl(jdbcUrl())
并根据环境实施jdbcUrl()
。
您可能要研究的另一个功能集是可以应用的架构映射功能:
请注意,检入生成的代码并从中构建库,而不是在每个环境中重新生成代码,这并非不常见。