【发布时间】:2016-02-02 22:25:05
【问题描述】:
我想使用预定义的表格模板动态创建新的数据库表格。那部分我看不出有什么问题。
但是我希望有一个 jOOQ 生成的表类(来自模板)来编写 jOOQ 查询并在执行前更改表名。
有人有解决办法吗?
【问题讨论】:
我想使用预定义的表格模板动态创建新的数据库表格。那部分我看不出有什么问题。
但是我希望有一个 jOOQ 生成的表类(来自模板)来编写 jOOQ 查询并在执行前更改表名。
有人有解决办法吗?
【问题讨论】:
为此使用 jOOQ 的运行时模式/表映射支持:
Settings settings = new Settings()
.withRenderMapping(new RenderMapping()
.withSchemata(
new MappedSchema().withInput("THE_SCHEMA")
.withOutput("THE_SCHEMA")
.withTables(
new MappedTable().withInput("PREDEFINED_TABLE")
.withOutput("CHANGED_TABLE")
)
));
// Add the settings to the DSLContext
DSLContext ctx = DSL.using(connection, dialect, settings);
// Run your queries with the above ctx
ctx.select(PREDEFINED_TABLE.COLUMM)
.from(PREDEFINED_TABLE)
.fetch();
上面会生成
SELECT "THE_SCHEMA"."CHANGED_TABLE"."COLUMN"
FROM "THE_SCHEMA"."CHANGED_TABLE"
更多信息在这里: http://www.jooq.org/doc/latest/manual/sql-building/dsl-context/runtime-schema-mapping
【讨论】: