如何将 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_02
和 my_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_01
或 my_table_02
或my_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);
...
}
我在 MySQL 中有一些具有相同结构的旧表,例如:
my_table_01
my_table_02
my_table_03
...
有没有一种方法可以将 JOOQ 代码生成器配置为仅生成一个由所有这些表共享的 table/record class?
为了实现您喜欢做的事情,您必须执行两个步骤:
1。配置代码生成器
您可能需要排除 my_table_02
和 my_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_01
或 my_table_02
或my_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);
...
}