jOOQ中Table <r>和<tablelike>之间有什么区别

时间:2016-05-03 08:55:05

标签: java sql jooq

有人可以简单地告诉我这两个对象之间的区别以及为什么可以使用另一个对象?

1 个答案:

答案 0 :(得分:1)

Nutshell,TL; DR版本:

您应该只引用Table。 jOOQ的内部也使用TableLike

完整解释:

jOOQ的DSL充满了小标记接口,只是因为Java语言缺乏对联合类型的支持。例如,在SQL语法中,Table<?>(如CREATE TABLE x ...)和Select<?>(如SELECT * FROM ...)是相同的东西,当你把它放在FROM条款。

在“理想的”Java语言中,FROM子句将被声明为:

interface SelectFromStep {
    SelectWhereStep from(Table | Select tableReference);
}

因为这是不可能的,并且因为当(ab)使用像jOOQ这样的泛型时,重载和泛型类型擦除是痛苦的重要来源,所以jOOQ具有这些标记接口。与TableLike类似,后者是TableSelect的超类型。

因此,仅作为jOOQ DSL中的方法参数类型非常重要,而不是作为用户。