【发布时间】:2016-04-05 00:11:56
【问题描述】:
我在 MySQL 中有一些具有相同结构的旧表,例如:
my_table_01
my_table_02
my_table_03
...
有没有办法可以配置 JOOQ 代码生成只生成一个由所有这些表共享的表/记录类?
【问题讨论】:
我在 MySQL 中有一些具有相同结构的旧表,例如:
my_table_01
my_table_02
my_table_03
...
有没有办法可以配置 JOOQ 代码生成只生成一个由所有这些表共享的表/记录类?
【问题讨论】:
为了实现您喜欢做的事情,您必须执行两个步骤:
您可能必须从生成中排除my_table_02 和my_table_03。你可以通过指定the <excludes/> tag as documented here来做到这一点。
或者,您可以使用generator strategies (programmatic config) 或matcher strategies (XML config) 将my_table_01 重命名为my_table。
在对MY_TABLE 运行查询时,您可以指定runtime table mapping 以便将MY_TABLE 映射回my_table_01 或my_table_02 或my_table_03。此映射在每个配置的基础上工作,即如果您对每个查询使用一个配置,它将具有单个查询的范围。
当然,另一种选择是对客户端代码中的这些后缀进行抽象,例如通过表选择方法:
public static Table<?> myTable() {
if (something)
return DSL.table("{0}_01", MY_TABLE);
else if (somethingElse)
return DSL.table("{0}_02", MY_TABLE);
...
}
【讨论】: