1

次の行を戻す sql ステートメントがあります。

ここに画像の説明を入力

これらの値を JDBC 結果セットから 2 つのオブジェクトとして取得したいと考えています。1 つは customerNo 1 の顧客用で、もう 1 つは顧客 2 用です。2 つのオブジェクトに、関連するタイトルとオブジェクト値を含む別の配列値を持たせたいと考えています。

構造は最終的に次のようになります (JSON で)。

{customerNo : 1, ["オブジェクト 1", "オブジェクト 2", "オブジェクト 3"]}, {customerNo : 2, ["オブジェクト 4", "オブジェクト 5"]}

JDBCでこれを達成するにはどうすればよいですか?

4

2 に答える 2

2

Map を使用して、最初に必要な形式で結果を収集できます。

Map<Integer, Set<String>> customerTitles = new HashMap<Integer, Set<String>>();
while(resultSet.next()) {
    Integer custId = resultSet.getInt(1);
    Set<String> titles = customerTitles.containsKey(custId) ? 
            customerTitles.get(custId) : new HashSet<String>();
    titles.add(resultSet.getString(2));
    customerTitles.put(custId, titles);
}

この方法で収集したら、マップを反復処理し、その中のセットを順に処理して、それらを JSON に変換できます。

// Convert to Json array here using your JSON library
for(Integer custId :  customerTitles.keySet()) {
    for(String title : customerTitles.get(custId)) {

    }
}
于 2012-05-23T22:20:25.687 に答える
0

私が考えることができる2つの方法。

  1. クエリでCustomerNo最初のものを取得し、 . 次に for every (ループを使用)でa を実行し、新しいfor eachを作成します。SELECT DISTINCTCOLLECTIONCustomerNoCOLLECTIONSELECT Title from table WHERE CustomerNo = <collectionValue>JSON ObjectCustomerNo

  2. で取得RESULTSETSELECT CustomerNo, Title FROM tablename ORDER BY CustomerNoます。の取得コード (ループ内) で、RESULTSET変数をCustomerNoから取得しRESULTSET、次の行をチェックします。新しい に遭遇した場合は、新しいCustomerNoを作成しますJSON Object

于 2012-05-23T22:14:15.043 に答える