sql >> データベース >  >> RDS >> Mysql

jOOQでの一時テーブル列名の修飾

    jOOQでテーブル/列を動的に(つまり、コードジェネレーターを使用せずに)操作する方法は2つあります。

    プレーンSQLの使用(org.jooq.SQL

    それがあなたがしていることです。プレーンSQLのFieldで列を直接修飾できることは明らかです。 2つの方法で参照:

    "tmp"を繰り返す 各フィールドの文字列:

    Table<Record> TMP = DSL.table("tmp");
    Field<String> TYPE = DSL.field("tmp.type", String.class);
    Field<String> TOKEN = DSL.field("tmp.token", String.class);
    

    "tmp"を埋め込むことによって プレーンSQLテンプレートでの参照:

    Table<Record> TMP = DSL.table("tmp");
    Field<String> TYPE = DSL.field("{0}.type", String.class, TMP);
    Field<String> TOKEN = DSL.field("{0}.token", String.class, TMP);
    

    プレーンSQL機能は、ここのマニュアルに記載されています

    修飾された参照の使用(org.jooq.Name

    それはおそらくあなたが代わりにやりたいことです。次のように記述します:

    Table<Record> TMP = DSL.table(DSL.name("tmp"));
    Field<String> TYPE = DSL.field(DSL.name("tmp", "type"), String.class);
    Field<String> TOKEN = DSL.field(DSL.name("tmp", "token"), String.class);
    

    名前付け機能については、このマニュアルで説明されています

    このアプローチの利点は次のとおりです。




    1. SQL ServerのROUND()の例

    2. SQLDeveloperに新しい接続を追加するときにOracleTNS名が表示されない

    3. PostgreSQLと認証システムの統合

    4. Postgres-XLの未来