可用版本: Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11

别名生成的表

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

当你执行表别名化并从生成的别名表解引用字段时,jOOQ的代码生成器的强大之处会更加明显。通过示例可以最好地说明这一点

-- Select all books by authors born after 1920,
-- named "Paulo" from a catalogue:



SELECT *
  FROM author a
  JOIN book b ON a.id = b.author_id
 WHERE a.year_of_birth > 1920
   AND a.first_name = 'Paulo'
 ORDER BY b.title
 
// Declare your aliases before using them in SQL:
Author a = AUTHOR.as("a");
Book b = BOOK.as("b");

// Use aliased tables in your statement
create.select()
      .from(a)
      .join(b).on(a.ID.eq(b.AUTHOR_ID))
      .where(a.YEAR_OF_BIRTH.gt(1920)
      .and(a.FIRST_NAME.eq("Paulo")))
      .orderBy(b.TITLE)
      .fetch();

正如你在上面的示例中看到的,在生成的表上调用as()会返回与该表相同类型的对象。这意味着生成的对象可用于从别名表解引用字段。这在让你的 Java 编译器检查 SQL 语句的语法方面非常强大。 如果你从表中删除一列,则从该表别名解引用该列将导致编译错误。

方言支持

此示例使用 jOOQ

select(a.ID).from(a)

翻译成以下特定方言的表达式

所有方言

SELECT a.ID
FROM AUTHOR a
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL

反馈

你对此页面有任何反馈吗? 我们很乐意听到!

The jOOQ Logo