すべてのプロダクト
Search
ドキュメントセンター

DataWorks:コードエディタ:高度な SQL(MyBatis 構文)のサンプル

最終更新日:Feb 28, 2026

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 生成ページにおけるパラメーター設定を示す表です。必要に応じて例示値を置き換えてください。image.png

  • リクエストパラメーター:

    パラメーター名

    パラメーター型

    パラメーター位置

    必須

    例示値

    デフォルト値

    説明

    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 生成ページにおけるパラメーター設定を示す表です。必要に応じて例示値を置き換えてください。image.png

  • リクエストパラメーター:

    パラメーター名

    パラメーター型

    パラメーター位置

    必須

    例示値

    デフォルト値

    var

    INT

    QUERY

    はい

    1

    1

  • 返却パラメーター:

    パラメーター名

    パラメーター型

    例示値

    col01

    STRING

    123

サンプル 3:フィールド値が空かどうかに応じて WHERE クエリ条件の有無を制御

本サンプルでは、area 値を含む list コレクションに基づき、クエリ条件を動的に生成してデータを検索します。

list コレクションが null でない場合、システムは list コレクションを走査し、各要素を指定された方式で連結することで、area フィールド値を含むクエリ条件を生成します。クエリは area_idareaamount フィールドからデータを返却します。

以下にコードのサンプルを示します。

重要

コードを利用する際は、テーブル名、フィールド名、その他の条件を必要に応じて置き換えてください。

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 生成ページにおけるパラメーター設定を示す表です。必要に応じて例示値を置き換えてください。image.png

  • リクエストパラメーター:

    パラメーター名

    パラメーター型

    パラメーター位置

    必須

    例示値

    デフォルト値

    list

    STRING_LIST

    QUERY

    はい

    北京, 杭州

    北京

  • 返却パラメーター:

    パラメーター名

    パラメーター型

    例示値

    area_id

    STRING

    123120

    area

    STRING

    北京

    amount

    STRING

    50