回答
jOOQ有兩種類型的API來構造查詢。
允許在Java代碼中創建內聯SQL語句的DSL API,例如,
create.select(T.A, T.B).from(T).where(T.X.eq(3).and(T.Y.eq(5)));
「模型」 的API,允許增量SQL建設。
https://www.jooq.org/doc/latest/manual/sql-building/sql-statements/dsl-and-non-dsl/
:在任何時候,你可以在DSL查詢對象
你想在這裏做手冊中給出的代碼示例上通過getQuery()
方法訪問「模型」 API
例如,任選地加入加入:
DSLContext create = DSL.using(configuration);
SelectQuery query = create.selectQuery();
query.addFrom(AUTHOR);
// Join books only under certain circumstances
if (join)
query.addJoin(BOOK, BOOK.AUTHOR_ID.equal(AUTHOR.ID));
Result<?> result = query.fetch();
或者,optinally添加條件/謂詞:
query.addConditions(BOOK.TITLE.like("%Java%"));
query.addConditions(BOOK.LANGUAGE_CD.eq("en"));
UPDATE:考慮您的意見,這就是你要找的內容:
// Retrieve search strings from your user input (just an example)
String titleSearchString = userInput.get("TITLE");
String languageSearchString = userInput.get("LANGUAGE");
boolean lookingForTitles = titleSearchString != null;
boolean lookingForLanguages = languageSearchString != null;
// Add only those conditions that the user actually provided:
if (lookingForTitles)
query.addConditions(BOOK.TITLE.like("%" + titleSearchString + "%"));
else if (lookingForLanguages)
query.addConditions(BOOK.LANGUAGE_CD.eq(languageSearchString));
請注意,您還可以使用Field.compare(Comparator, Object)
方法:
// Initialise your dynamic arguments
Field<String> field = BOOK.TITLE;
Comparator comparator = Comparator.LIKE;
String value = "%" + titleSearchString + "%";
// Pass them to the field.compare() method
query.addConditions(field.compare(comparator, value));
欲瞭解更多信息,考慮org.jooq.SelectQuery Javadoc
但我還有一個問題。我可以在查詢中使用java變量(特別是在addConditions部分中),以便我可以在運行時將這些變量的值。例如。列名稱。 – user1900723
@ user1900723:什麼讓你不能將這些元素分配給Java中的變量? –
讓我來解釋一下這個場景。其實我有一些列,我必須在表格中搜索。例如:名稱,ID,日期。我需要根據它們獲取數據,並且有另一個參數,其中包含像EQUAL TO,BEGINS WITH(需要使用像運算符),ENDS WITH(需要使用像運算符一樣)的值。我需要動態地做這一切。所以,需要使用變量,以便我可以把值放在一邊。如果您需要進一步澄清,請告訴我。我被困在這裏。 – user1900723
- 1. Jooq創建jasper報告查詢
- 2. 從jooq查詢中創建PreparedStatement
- 3. 動態創建linq查詢
- 4. 創建動態LINQ查詢
- 5. 創建動態查詢Ibatis
- 6. 創建動態mysql查詢
- 7. 動態創建sql查詢
- 8. 動態查詢創建MySQL
- 9. 動態SQL查詢創建
- 10. 動態查詢創建
- 11. JOOQ查詢
- 12. 動態創建的滑動查詢
- 13. JOOQ - 選擇查詢
- 14. 如何動態創建Linq查詢
- 15. 創建動態更新SQL查詢
- 16. 動態創建MySQL的SELECT查詢
- 17. 需要查詢的是動態創建
- 18. 從mysql查詢動態創建表
- 19. 創建動態查詢字符串
- 20. 創建一個動態查詢
- 21. 動態查詢創建和執行PostgreSQL
- 22. 爲SQLite3創建動態查詢
- 23. SQL - 動態查詢不會創建表
- 24. PHP動態查詢創建形式
- 25. 動態創建蒙戈查詢對象
- 26. 動態在django中創建「OR」查詢
- 27. 如何創建動態PowerShell查詢?
- 28. pl sql&java - 創建動態查詢
- 29. 動態創建查詢on Rails的
- 30. 如何創建jooq
你能更清楚一點嗎?例如。你能提供一個你想構建的示例查詢嗎?你試過了什麼,你哪裏失敗了? –
其實我需要創建選擇查詢;其中我需要根據傳遞的參數更新where子句。就像從用戶界面我傳遞一些過濾器,並希望動態地添加到我的WHERE條件。 – user1900723