我正在寻找如何执行超过 22 行的 jOOQ 查询的示例。
http://www.jooq.org/doc/latest/manual/sql-building/column-expressions/row-value-expressions/
告诉我这是可能的,但我还没找到例子。
有人能指出我正确的方向吗?
从 jOOQ 3.7 开始(目前没有计划改变这一点),22 是可以以类型安全方式获取的最大列数。超过 22 后,您仍然可以执行查询,但 jOOQ 的 API 将不再跟踪您的记录类型。例如:
// Still type safe
Result<Record22<Integer, String, ..., Integer>> result =
DSL.using(configuration)
.select(INT_COLUMN1, STRING_COLUMN2, ..., INT_COLUMN22)
.from(TABLE)
.fetch();
// Add one more column, and "lose" type safety
Result<Record> result =
DSL.using(configuration)
.select(INT_COLUMN1, STRING_COLUMN2, ..., INT_COLUMN22, STRING_COLUMN23)
.from(TABLE)
.fetch();
Run Code Online (Sandbox Code Playgroud)
从 API 用户的角度来看,无论您选择 22 列或更少的列(安全类型),还是选择 23 列或更多列(无类型安全),API 的“感觉”都完全相同。
UNION当您将类型安全查询与非类型安全查询进行比较时,差异可能会变得最明显:
// Still type safe
Result<Record22<Integer, String, ..., Integer>> result =
DSL.using(configuration)
.select(INT_COLUMN1, STRING_COLUMN2, ..., INT_COLUMN21)
.from(TABLE)
.union(
// ^^^^^ compilation error here
select(INT_COLUMN1, STRING_COLUMN2, ..., INT_COLUMN21, INT_COLUMN22)
.from(TABLE))
.fetch();
// Add one more column, and "lose" type safety
Result<Record> result =
DSL.using(configuration)
.select(INT_COLUMN1, STRING_COLUMN2, ..., STRING_COLUMN23)
.from(TABLE)
.union(
// ^^^^^ This compiles, even if it's wrong
select(INT_COLUMN1, STRING_COLUMN2, ..., STRING_COLUMN23, STRING_COLUMN24)
.from(TABLE))
.fetch();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2423 次 |
| 最近记录: |