@jws:sql 文におけるパラメータの置換

このトピックでは、データベース コントロールのメソッドに関連付けられる @jws:sql タグのパラメータの置換について説明します。

データベース コントロールの詳細については、データベース コントロール : Web サービスからデータベースを使用するを参照してください。

データベース コントロールの作成方法については、新しいデータベース コントロールを作成するを参照してください。

置換の条件

置換は、次の条件に従って行われます。

単純なパラメータを置換する

データベース コントロール メソッドのパラメータがプリミティブまたは単純な型の場合、パラメータを @jws:sql タグの statement パラメータの文字列値として {} 置換で直接参照することができます。

単純なパラメータ置換を次の例で示します。

/**
 * @jws:sql statement="SELECT name FROM customer WHERE city={custCity} AND state={custState}"
 */
public String [] getCustomersInCity( String custCity, String custState );

クエリでは、custCity メソッド パラメータの値は {custCity} 項目と置換され、custState メソッド パラメータの値は {custState} 項目と置換されます。

置換は、置換の条件で説明した条件に従って実行されます。

リテラル内の中括弧の扱い

リテラル内の中括弧({})は無視されます。つまり、次のような文は意図したとおりに機能しません。

/**
 * @jws:sql statement::
 *     SELECT name
 *     FROM employees
 *     WHERE name LIKE '%{partialName}%'
 * ::
 */
public String[] partialNameSearch(String partialName);

リテラル文字列内の中括弧は無視されるので、partialName Java 文字列は SELECT 文に置換されません。この問題を回避するには、次に示すとおり、JWS ファイル内の一致文字列をあらかじめフォーマットしてからデータベース コントロールを起動します。

String partialNameToMatch = "'%" + matchString + "%'"
String [] names = myDBControl.partialNameSeach(partialNameToMatch);

パラメータを間接的に置換する

次のクラスが宣言され、データベース コントロールにアクセスできるものとします。

public static class Customer
{
    public String firstName;
    public String lastName;
    public String streetAddress;
    public String city;
    private String state;
    public String zipCode;


   public String getState() {return state}; }

次の例に示すように、Customer パラメータのメンバーを {} 置換で参照することができます。

/**
 * @jws:sql statement="SELECT name FROM customer WHERE city={cust.city} AND state={cust.state}"
 */
public String [] getCustomersInCity( Customer cust );

注意 : クラス メンバー変数とアクセサ メソッド(getXxx)は、データベース コントロールが置換できるようにパブリックでなければなりません。

パラメータ オブジェクトのメンバーにアクセスするには、ドット表記を使用します。

置換パターンが {myClass.myMember} とすると、置換する際にドット表記を解決する優先順位は次のとおりです。

上記のいずれの条件も該当しない場合、データベース コントロール メソッドは weblogic.jws.control.ControlException を送出します。

置換は、置換の条件で説明した条件に従って実行されます。

関連トピック

データベース コントロールでデータベース フィールドの型を Java の型にマップする

データベース コントロール メソッドから単一の値を返す

データベース コントロール メソッドから単一の行を返す

データベース コントロール メソッドから複数の行を返す

.