gpt4 book ai didi

java - 使用来自两个不同数据库的两个表使用 JOOQ 构建左连接查询

转载 作者:行者123 更新时间:2023-11-29 01:50:51 24 4
gpt4 key购买 nike

我们正在使用 JOOQ 执行所有查询。

现在我们需要用 JOOQ 创建左连接查询,什么将左连接来自两个不同数据库的两个表

native SQL 查询示例(如下),我们需要使用 JOOQ 框架构建此查询,而不是使用 native SQL。直到现在我还没有找到任何解决方案,可能是 JOOQ 不支持此功能

SELECT * 
FROM `library`.`books`
LEFT JOIN `library2`.`author2` ON `library`.`books`.`author_id` = `library2`.`author2`.`id`

最佳答案

代码生成器配置

如果您想使用两个不同的数据库/模式,您需要相应地配置代码生成器。您可以指定多个输入模式 as documented here :

<configuration>
<generator>
<database>
<schemata>
<schema>
<inputSchema>library</inputSchema>
</schema>
<schema>
<inputSchema>library2</inputSchema>
</schema>
</schemata>
</database>
</generator>
</configuration>

备选方案:

  • 您可以不使用 <inputSchema/>配置和 jOOQ 的代码生成器将简单地生成所有可用的模式。
  • 您可以配置多个独立的代码生成,每个模式一个。这意味着您的模式没有相互共享的链接元数据(例如外键)。

查询

jOOQ manual recommends referencing tables from a global generated Tables class .这适用于单一模式设置。当查询多个模式时,可能值得从生成的模式实例中引用表。以下是编写查询的方法:

import static com.example.generated.library .Library .LIBRARY ;
import static com.example.generated.library2.Library2.LIBRARY2;
// ^^^^^^^^ ^^^^^^^^ ^^^^^^^^
// | | |
// Package per schema -----------------+ | |
// Schema class --------------------------+ |
// Schema instance -----------------------------------+

然后:

DSL.using(configuration)
.select()
.from(LIBRARY.BOOKS)
.leftJoin(LIBRARY2.AUTHOR2)
.on(LIBRARY.BOOKS.AUTHOR_ID.eq(LIBRARY2.AUTHOR2.ID))
.fetch();

关于java - 使用来自两个不同数据库的两个表使用 JOOQ 构建左连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44030012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com