[英]Build Left Join Query with JOOQ using two Tables from two Different Databases
我們正在使用JOOQ執行所有查詢。
現在我們需要使用JOOQ創建左聯接查詢,這將使來自兩個不同數據庫的兩個表左聯接
示例本機SQL查詢(貝洛),我們需要使用JOOQ框架而不是本機sql來構建此查詢。 到目前為止,我還沒有找到任何解決方案,JOOQ可能不支持此功能
SELECT *
FROM `library`.`books`
LEFT JOIN `library2`.`author2` ON `library`.`books`.`author_id` = `library2`.`author2`.`id`
如果要使用兩個不同的數據庫/架構,則需要相應地配置代碼生成器。 您可以指定一些輸入模式,如此處記錄 :
<configuration>
<generator>
<database>
<schemata>
<schema>
<inputSchema>library</inputSchema>
</schema>
<schema>
<inputSchema>library2</inputSchema>
</schema>
</schemata>
</database>
</generator>
</configuration>
備擇方案:
<inputSchema/>
inputSchema <inputSchema/>
配置,而jOOQ的代碼生成器將只生成所有可用的模式。 jOOQ手冊建議從全局生成的Tables
類引用表 。 這對於單模式設置非常有效。 查詢多個模式時,可能值得參考所生成的模式實例中的表。 這是編寫查詢的方法:
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.