DataService Studio では、コードエディタを用いて API を生成できます。コードエディタでは、基本的な SQL 構文に加えて、高度な SQL 構文を用いてクエリロジックを記述できます。高度な SQL には、if、choose、when、otherwise、trim、foreach、where などの一般的な MyBatis タグが含まれます。これらのタグを活用することで、NULL 値のチェック、複数値の走査、動的テーブルのクエリ、動的ソート、集約など、複雑なクエリロジックを実装できます。
注意事項
本トピックでは、コードエディタで API を生成する際に高度な SQL クエリロジックを記述する際のサンプルを紹介します。また、SQL コードと API 生成ページ上の リクエストパラメーター および 返却パラメーター の関係についても説明します。実行時にエラーが発生しないよう、テーブル名、フィールド名、クエリ条件は必ずご利用の環境に合わせて置き換えてください。
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を用いて結果をソートします。
以下に SQL コードのサンプルを示します。
コードを利用する際は、テーブル名、フィールド名、その他の条件を必要に応じて置き換えてください。
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>以下は、本サンプルの API 生成ページにおけるパラメーター設定を示す表です。必要に応じて例示値を置き換えてください。
リクエストパラメーター:
パラメーター名
パラメーター型
パラメーター位置
必須
例示値
デフォルト値
説明
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>以下は、本サンプルの API 生成ページにおけるパラメーター設定を示す表です。必要に応じて例示値を置き換えてください。
リクエストパラメーター:
パラメーター名
パラメーター型
パラメーター位置
必須
例示値
デフォルト値
var
INT
QUERY
はい
1
1
返却パラメーター:
パラメーター名
パラメーター型
例示値
col01
STRING
123
サンプル 3:フィールド値が空かどうかに応じて WHERE クエリ条件の有無を制御
本サンプルでは、area 値を含む list コレクションに基づき、クエリ条件を動的に生成してデータを検索します。
list コレクションが null でない場合、システムは list コレクションを走査し、各要素を指定された方式で連結することで、area フィールド値を含むクエリ条件を生成します。クエリは 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>以下は、本サンプルの API 生成ページにおけるパラメーター設定を示す表です。必要に応じて例示値を置き換えてください。
リクエストパラメーター:
パラメーター名
パラメーター型
パラメーター位置
必須
例示値
デフォルト値
list
STRING_LIST
QUERY
はい
北京, 杭州
北京
返却パラメーター:
パラメーター名
パラメーター型
例示値
area_id
STRING
123120
area
STRING
北京
amount
STRING
50