ページの先頭行へ戻る
Big Data Integration ServerV1.4.0 検索編アプリケーション開発ガイド
FUJITSU Software

K.3.2 件数に応じて検索した結果を取得する

Webアプリケーションでは、画面にすべての検索結果を表示するのではなく、任意の件数ごとにページを制御することが一般的です。

このような場合、setRequestメソッドに返信開始番号(position)と返信要求件数(requestCount)を指定して、取得するデータの件数を制御します。

件数に応じて検索した結果を取得する場合の流れについて、以下の図に示します。


図K.4 件数に応じて検索した結果を取得する場合の流れ

記述例

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


ビジネスクラス

ShunConnection con = new ShunConnection();

ShunsakuAccessController controller = new ShunsakuAccessController(con);
controller.search(key);
Object[] resultData = 
      controller.getResultData(ShunsakuAccessController.SORT_NONE, 11, 5);
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); (1)
: }

(a)検索式

対話形式のウィザードで定義します。複雑な検索式も対話形式のウィザードで作成することができます。

(b)リターン式

XML文書全体を取り出す“/”が指定されます。


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

public Object[] getResultData(String sortString,
                              int position,
                              int requestCount)
                                          throws ShunException {
    :
  ShunResultSet resultSet = getResultSet(sortString, position, requestCount);
    :
  Object[] resultData = parseResultSet(resultSet);                                            (4)
    :
  resultSet.close();                                                                          (5)
    :
}

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

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

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

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

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

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


(2) 返信開始番号と返信要求件数の設定

setRequestメソッドに返信開始番号と返信要求件数を指定します。setRequestメソッドを省略した場合、返信要求件数はconductor用動作環境ファイルまたはdirector用動作環境ファイルのAnsMaxに設定された値が指定されます。

ポイント

返信要求件数には、1画面に表示する件数を指定します。


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

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

ポイント

検索条件に一致するXML文書のヒット件数は、getHitCountメソッドで取得できます。この値を使用して、検索した結果のページ数などを求めることができます。


(4) 検索した結果の取出し

parseResultSetメソッドのパラメタにShunResultSetオブジェクトを指定して、検索した結果を取り出します。


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

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