答えて
jOOQには、クエリを構築するための2種類のAPIがあります。
JavaコードでインラインSQL文を作成できるようにするDSL API。
create.select(T.A, T.B).from(T).where(T.X.eq(3).and(T.Y.eq(5)));
増分SQL構築を可能にする「モデル」API。
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:あなたのコメントを考えると、それはあなたが探しているものです:詳細情報については
// 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));
、:
// 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)
メソッドを使用することができますあなたがもう少し明示することができますか?org.jooq.SelectQuery Javadoc
しかしもう一つ質問があります。私は実行時にそれらの変数の値を入れることができるように、私はクエリ(特にaddConditionsの部分)でJava変数を使用できますか?たとえば。列名。 – user1900723
@ user1900723:Javaの変数にこれらの要素を割り当てないようにするにはどうすればよいですか? –
シナリオを説明しましょう。実際に私はテーブルで検索する必要があるいくつかの列があります。たとえば、名前、ID、日付などです。私はそれらに基づいてデータを取り出す必要があります。等号、始まり(オペレータのように使う必要があります)、終わり(オペレータのように使う必要があります)などの値を含むもう1つのパラメータがあります。私はすべてこれを動的に行う必要があります。だから、変数を使用して、値を飛ばせるようにする必要があります。それ以上の説明が必要な場合はお知らせください。私はここで立ち往生している。 – user1900723
- 1. JOOQでスキーマを作成するには?
- 2. 再帰的クエリを動的に作成する方法は?
- 3. JOOQ:どのようにドロップ列のクエリを作成するには?
- 4. 目的c sqlite3_prepare_v2に渡す動的クエリを作成
- 5. 動的Linq2Sqlコンパイル済みクエリを作成するには?
- 6. SQLite3の動的クエリの作成
- 7. jOOqキーが不正クエリを生成する
- 8. JPQLリポジトリで実行する「動的」クエリを作成します
- 9. SubSonicを使用して動的クエリを作成する方法
- 10. AJAXを使用して動的クエリを作成する方法
- 11. 動的クエリを使用してテンポラリテーブルを作成する方法
- 12. 動的にCAMLクエリを作成します
- 13. 動的にSqlDataSourceの選択クエリを作成します。
- 14. Spring JOOQの生成が部分的に失敗する
- 15. 動的なタイプセーフなクエリを作成する
- 16. 動的Entity Frameworkクエリを作成する方法
- 17. SQL Serverでリンクサーバーの動的クエリを作成する
- 18. ネイティブコードで動的sqliteクエリを作成する
- 19. Cassandra 3 Java Driver動的クエリを作成する
- 20. 動的SQLクエリを作成する方法
- 21. Entity Frameworkで動的SQLクエリを作成する方法は?
- 22. 動的クエリを作成する方法は?
- 23. 動的な量のEctoクエリを作成するフィルタ
- 24. このクエリを動的SQLとして作成する方法
- 25. laravel 5.3で動的クエリを作成する方法は?
- 26. CheckBoxを動的に作成する動的に作成されたGridView
- 27. 動的ページに動的ボタンを作成
- 28. 生成されたキーを返すjOOQの挿入クエリ
- 29. JOOQ WITH WITH句へのクエリ
- 30. jOOQ Configurationオブジェクトの作成方法は?
もう少し明確にすることはできますか?例えば。構築したいサンプルクエリを提供できますか?あなたは何を試しましたか、どこで失敗しましたか? –
実際には私は選択クエリを作成する必要があります。渡されたパラメータに基づいてwhere節を更新する必要があります。 UIのように、いくつかのフィルタを渡していて、WHERE条件に動的に追加したいと思っています。 – user1900723