DataService Studio では、コードエディターを使用して API を作成できます。このエディターでは、基本 SQL または高度な SQL を使用してクエリロジックを記述できます。高度な SQL は、if、choose、when、otherwise、trim、foreach、where など、一般的な MyBatis タグをサポートしています。これらのタグを使用すると、null 値のチェック、複数値の反復、テーブルの動的なクエリ、動的なソート、集約などの複雑なクエリロジックを実装できます。
使用上の注意
このトピックでは、コードエディターで API を作成する際に、高度な SQL を使用してクエリロジックを記述する例を紹介します。また、SQL コードと、API 作成ページの リクエストパラメーター および 戻りパラメーター の対応関係についても説明します。ランタイムエラーを防ぐために、例に記載されているテーブル、フィールド、クエリ条件はお客様の環境に合わせて置き換えてください。
リクエストパラメーターとレスポンスパラメーターのサンプル値の指定は任意です。リクエストパラメーターにサンプル値を指定すると、API のテスト時に入力として自動的に読み込まれます。これにより、テストのたびに同じ値を入力する手間を省けます。サンプル値は参照用です。
コードエディターで API を作成する方法の詳細については、「スクリプトモードで API を作成」をご参照ください。
このトピックでは、次の高度な SQL (MyBatis 構文) のユースケースの例を紹介します:
例 1:結果の条件付きソート
この動的 SQL の例では、var パラメーターの値によってソート順が決まります。
-
varが 1 の場合、クエリはORDER BY col01を使用して結果をソートします。 -
varが 2 の場合、クエリはORDER BY col02を使用して結果をソートします。 -
varが 3 の場合、クエリはORDER BY col01,col02を使用して結果をソートします。 -
varが 4 の場合、クエリはORDER BY col02,col01を使用して結果をソートします。
以下にコード例を示します。
この例のテーブル名、フィールド、その他の条件はお客様の環境に合わせて置き換えてください。
select col01,col02
from table_name
<choose>
<when test='var == 1'>
order by col01
</when>
<when test='var == 2'>
order by col02
</when>
<when test='var == 3'>
order by col01,col02
</when>
<when test='var == 4'>
order by col02,col01
</when>
</choose>
-
リクエストパラメーター:
パラメーター
型
位置
必須
サンプル値
デフォルト
説明
var
INT
QUERY
はい
1
1
ソート順
-
レスポンスパラメーター:
パラメーター
型
サンプル値
col01
STRING
shortname
col02
STRING
name
例 2:異なるテーブルの条件付きクエリ
この動的 SQL の例では、var パラメーターの値に基づいて異なるテーブルをクエリします。クエリは col01 フィールドのデータを返します。
-
varが 1 の場合、クエリは table_name01 テーブルの col01 フィールドからデータを取得します。 -
varが 2 の場合、クエリは table_name02 テーブルの col01 フィールドからデータを取得します。
以下にコード例を示します。
この例のテーブル名、フィールド、その他の条件はお客様の環境に合わせて置き換えてください。
select col01
from
<choose>
<when test='var == 1'>
table_name01
</when>
<when test='var == 2'>
table_name02
</when>
</choose>
-
リクエストパラメーター:
パラメーター
型
位置
必須
サンプル値
デフォルト
var
INT
QUERY
はい
1
1
-
レスポンスパラメーター:
パラメーター
型
サンプル値
col01
STRING
123
例 3:WHERE 句の条件付き追加
この例では、list コレクションの area 値に基づいてクエリ条件を動的に生成し、条件に基づいてデータをクエリします。
list が null でない場合、area フィールドの値を使用してクエリ条件が生成されます。さらに、list コレクションを反復して要素を指定の方法で連結し、area_id、area、amount フィールドのデータを返します。
以下にコード例を示します。
この例のテーブル名、フィールド、その他の条件はお客様の環境に合わせて置き換えてください。
SELECT area_id, area, amount
FROM table_name
<where>
<if test='list!=null'>
area in
<foreach collection="list" open="(" close=")" separator="," item="area">
#{area}
</foreach>
</if>
</where>
-
リクエストパラメーター:
パラメーター
型
位置
必須
サンプル値
デフォルト
list
STRING_LIST
QUERY
はい
Beijing,Hangzhou
-
レスポンスパラメーター:
パラメーター
型
サンプル値
area_id
STRING
123120
area
STRING
Beijing
amount
STRING
50