Interstage Shunsaku Data Manager アプリケーション開発ガイド - Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 - - UNIX共通 -
目次 索引 前ページ次ページ

第2部 APIでのアプリケーション開発> 第9章 Java APIのアプリケーション開発> 9.3 Java APIの使用方法> 9.3.2 データの検索

9.3.2.7 データをソートして取得する

検索した結果をある特定の要素をキーとしてソートして取得したい場合があります。

データの部分情報をソートして取得するには、setSortメソッドを使用します。

データをソートして取得する場合の流れについて、以下の図に示します。

[図:データをソートして取得する場合の流れ]

ソートを行う場合には、検索条件に一致したすべてのXML文書を参照してソート処理を行います。検索式には、結果件数が適正な値となるような条件を指定し、ソート対象のデータを絞ることが応答性能をよくするポイントです。ソートを実施する前に検索条件に一致したXML文書の件数を調べるには、setRequestメソッドの返信要求件数に0を指定します。

■記述例

ShunConnection con = new ShunConnection();

String queryExpression = "/document/base/prefecture == '大阪'";
String returnExpression = "/document/base/name, /document/base/price";
String sortExpression = "val(/document/base/price/text()) DESC";                        (1)
ShunPreparedStatement pstmt = con.prepareSearch(queryExpression, returnExpression);     (2)
pstmt.setSort(sortExpression);                                                          (3)
ShunResultSet rs = pstmt.executeSearch();                                               (4)
 while(rs.next()) {                                                                     (5)
  System.out.println("[検索結果] = " + rs.getString());                                  (5)
}
rs.close();                                                                             (6)
pstmt.close();                                                                          (6)

con.close();

◆(1) ソート式の作成

ソート式を作成します。

ソート式の詳細は、“B.5 ソート式”を参照してください。

◆(2) ShunPreparedStatementオブジェクトの作成

ShunPreparedStatementオブジェクトの作成は、検索式とリターン式を指定し、prepareSearchメソッドを使用します。

検索式およびリターン式の詳細は、“付録B 検索式、リターン式およびソート式の書式”を参照してください。

◆(3) ソート式の設定

ソート式の設定は、setSortメソッドを使用します。

ソート式に指定したキーの長さによって返却できる件数が決まります。最大件数は1000件です。返信開始番号や返信要求件数に返却可能な最大件数を超える値を指定しても、それ以上のデータは返却することができません。返却可能なデータの最大件数は、getReturnableCountメソッドで取得できます。
キーの長さと返却可能なデータ件数の目安については、“付録C 定量値”を参照してください。

取得開始位置を指定することにより、続きのデータを取り出すことができます。これにより1000件以上のデータを取り出すことができます。詳細については、“9.3.2.8 条件に一致するXML文書を連続して取得する”を参照してください。

◆(4) 検索の実行(ShunResultSetオブジェクトの作成)

検索の実行はexecuteSearchメソッドを使用します。検索した結果としてShunResultSetオブジェクトが作成されます。

◆(5) 検索した結果の取出し

検索した結果を取り出す前には、必ずnextメソッドを使用します。nextメソッドは、次のデータが存在する場合はtrueを返し、それ以上データがない場合はfalseを返します。

XML文書を取り出すには、目的に応じて以下のメソッドを使用します。使用可能なメソッドについては以下の表を参照してください。

[表: XML文書を取り出す場合に使用可能なメソッド一覧]

メソッド名

機能説明

getString

XML文書をStringオブジェクトで取り出します。

getStringArray

XML文書をStringオブジェクトの2次元配列で取り出します。

getStream

XML文書をInputStreamオブジェクトで取り出します。

備考.getStringArrayメソッドは、検索した結果をテキスト形式で取り出す場合に有効です。

検索した結果とともにデータを一意に識別するレコードIDをgetRecordIDメソッドで取得できます。レコードIDは、対応するXML文書の全体を取り出したり、削除したりする場合に使用します。

◆(6) ShunResultSetオブジェクトおよびShunPreparedStatementオブジェクトの解放

ShunResultSetオブジェクトとShunPreparedStatementオブジェクトは、使用後にそれぞれのcloseメソッドで必ず解放します。

■Apworks利用時の記述例

以下に、Apworksの対話形式のウィザードで作成されたShunsakuアクセスクラスを使ったビジネスクラスの記述例と、ビジネスクラスで使用しているShunsakuアクセスクラスのひな形を示します。

ビジネスクラス

ShunConnection con = new ShunConnection();

ShunsakuAccessController controller = new ShunsakuAccessController(con);
controller.search(key);
Object[] resultData = 
            controller.getResultData(ShunsakuAccessController.SORT_1);
controller.close();

con.close();

ShunPreparedStatementオブジェクト

public class ShunsakuAccessController {
    :
   private ShunPreparedStatement pstmt;
    :
}

Shunsakuアクセスクラスのsearchメソッド

public void search(String keys) throws ShunException {
    :
   queryString = "/document/base/prefecture == ' " + keys + "'";                             (a)
   returnString = "/";                                                                      (b)
    :
   getPreparedStatement(queryString, returnString);
    :
}

private void getPreparedStatement(String queryString, String returnString) {
    :
   pstmt = con.preparedSearch(queryString, returnString);                                    (2)
    :
}
(a) 検索式
対話形式のウィザードで定義します。複雑な検索式も対話形式のウィザードで作成することができます。
(b) リターン式
XML文書全体を取り出す“/”が指定されます。

ShunsakuアクセスクラスのgetResultDataメソッド

public Object[] getResultData(String sortString) throws ShunException {
    :
   resultSet = getResultSet(sortString);
    :
   resultData = parseResultSet(resultSet);                                 (5)
    :
   resultSet.close();                                                      (6)
}

public ShunResultSet getResultSet(String sortString) throws ShunException {
   return getResultSet(sortString, 1, Integer.MAX_VALUE);
}

public ShunResultSet getResultSet(String sortString,
                                  int position,
                                  int requestCount)
                                  throws ShunException {
    :
  if(!sortString.equals(SORT_NONE)) {
      pstmt.setSort(sortString);                                               (3)
   }
    :
   return pstmt.executeSearch();                                           (4)
    :
}

ソート式

ソート式は、対話形式のウィザードで作成し、ソート識別子としてShunsakuアクセスクラスの定数として定義されます。

public class ShunsakuAccessController {
    :
   public static final String SORT_NONE = "";                                   (1)
   public static final String SORT_1 = "val(/document/base/price/text())";      (1)
    :
}

Shunsakuアクセスクラスのcloseメソッド

public void close() throws ShunException {
    :
   pstmt.close();                                                    (6)
    :
}

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006