如何将 JOOQ 配置为具有相同结构的代码生成表?

How to configure JOOQ to codegen tables with the same structure?

我在 MySQL 中有一些具有相同结构的旧表,例如:

my_table_01
my_table_02
my_table_03
...

有没有一种方法可以将 JOOQ 代码生成器配置为仅生成一个由所有这些表共享的 table/record class?

为了实现您喜欢做的事情,您必须执行两个步骤:

1。配置代码生成器

您可能需要排除 my_table_02my_table_03 的生成。您可以通过指定 the <excludes/> tag as documented here.

来执行此操作

您可以选择使用 generator strategies (programmatic config) or matcher strategies (XML config)my_table_01 重命名为 my_table

2。配置您的运行时

当 运行 查询 MY_TABLE 时,您可以指定 runtime table mapping 以便将 MY_TABLE 映射回 my_table_01my_table_02my_table_03。此映射在每个配置的基础上工作,即如果您每个查询使用一个配置,它将具有单个查询的范围。

当然,另一种选择是在您的客户端代码中抽象这些后缀,例如通过 table 选择方法:

public static Table<?> myTable() {
    if (something)
        return DSL.table("{0}_01", MY_TABLE);
    else if (somethingElse)
        return DSL.table("{0}_02", MY_TABLE);
    ...
}