在JOOQ中documentation它说我可以这样做:
try (Connection c = getConnection()) {
String sql = "select schema_name, is_default " +
"from information_schema.schemata " +
"order by schema_name";
DSL.using(c)
.fetch(sql)
// We can use lambda expressions to map jOOQ Records
.map(rs -> new Schema(
rs.getValue("SCHEMA_NAME", String.class),
rs.getValue("IS_DEFAULT", boolean.class)
))
// ... and then profit from the new Collection methods
.forEach(System.out::println);
}
然而,当我这样做时,我得到错误" org.jooq.Schema是抽象的;无法实例化" - 如果你看documentation这是真的。
那么世界上的示例中的代码应该如何工作呢?
答案 0 :(得分:3)
简短回答:他们没有在他们的示例中使用"org.jooq.Schema",而是使用静态内部类。
如果向下滚动the page you linked的底部,则会给出示例的github链接。您拥有的示例是SQL goodies。
如果您打开SQLGoodies.java,您会注意到示例类顶部的静态内部类Schema
static class Schema {
final String schemaName;
final boolean isDefault;
Schema(String schemaName, boolean isDefault) {
this.schemaName = schemaName;
this.isDefault = isDefault;
}
@Override
public String toString() {
return "Schema{" +
"schemaName='" + schemaName + '\'' +
", isDefault=" + isDefault +
'}';
}
}
然后向下滚动,您将使用内部类找到您的示例:
DSL.using(c)
.fetch(sql)
.map(r -> new Schema(
r.getValue("SCHEMA_NAME", String.class),
r.getValue("IS_DEFAULT", boolean.class)
))