der*_*ink 5 java ddl code-generation database-schema jooq
有没有办法从纯Java代码生成jOOQ类?如果没有,最接近的替代方案是什么?理想情况下,我想在gradle构建中执行此操作.
CREATE语句)关于这种方法有三件事让我困扰:
Jooq 需要预先创建一些表。您可以使用 Flyway(并且您也应该使用它的迁移)。
拥有所有表后,您可以使用此代码片段让 Jooq 为您的表生成源文件:
import org.jooq.util.GenerationTool;
import org.jooq.util.jaxb.*;
Configuration configuration = new Configuration()
.withJdbc(new Jdbc()
.withDriver("org.postgresql.Driver")
.withUrl("jdbc:postgresql://localhost/your_database")
.withUser("username")
.withPassword("password"))
.withGenerator(new Generator()
.withName("org.jooq.util.DefaultGenerator")
.withDatabase(new Database()
.withName("org.jooq.util.postgres.PostgresDatabase")
.withIncludes(".*")
.withSchemata(new Schema().withInputSchema("your_schema"))
)
.withTarget(new Target()
.withPackageName("jooq.generate")
.withDirectory("src/main/java")));
try {
GenerationTool.generate(configuration);
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
这将.java在src/main/java path. 使用您的数据库设置等配置片段。
这大致就是我们在工作项目中做事的方式。Jooq 与Flyway配合得非常好。你可以查看Jooq关于代码生成的文档。
有一个我们不使用的 Maven 插件,因为我们有一个多租户设置,需要对数据库迁移和代码生成进行一些运行时配置。
我想一旦你在某个类的静态 main 方法中准备好了 Jooq 生成,你就可以从 gradle 任务运行它。我只能向您指出 Jooq 的关于从 gradle 运行它的文档。
编辑:好奇地查看文档和我自己生成的代码后,我发现您可以扩展Record和TableImpl<Record>类来生成手动创建的模式类。
您可以在此处看到有关Record和类的重要部分的小示例片段Table。
无论如何,请考虑到 Jooq(和 Flyway)并不希望您避免 SQL,而是拥抱它。正常的做事方式是
| 归档时间: |
|
| 查看次数: |
2516 次 |
| 最近记录: |