8

JOIN を必要とするクエリを実行する方法を探しています。準備されたステートメントでこれを行う方法はありますか、それともrawQuery私が持っている唯一のオプションです。が唯一のオプションである場合rawQuery、返されたオブジェクトを実装されている Dao のオブジェクトに自動的にマップする方法があります。

ドキュメントと例を調べましたが、未加工のデータベース結果を ORM オブジェクト クラスにマップできるものは見つかりませんでした。

4

3 に答える 3

17

JOINを必要とするクエリを実行する方法を探しています。

ORMLiteは、単純なJOINクエリをサポートしています。これを実現するためにrawクエリを使用することもできます。

を使用して、Dao.getRawRowMapper()見つけたクエリをマップするか、カスタムマッパーを作成できます。String[]ドキュメントには、オブジェクトにマップする方法を示す次のサンプルコードがあります。

GenericRawResults<Foo> rawResults =
  orderDao.queryRaw(
    "select account_id,sum(amount) from orders group by account_id",
    new RawRowMapper<Foo>() {
            public Foo mapRow(String[] columnNames,
              String[] resultColumns) {
                return new Foo(Long.parseLong(resultColumns[0]),
                    Integer.parseInt(resultColumns[1]));
        }
    });
于 2012-08-20T19:12:54.277 に答える
9

結果セットをモデル オブジェクトに自動マッピングする方法を見つけました。

// return the orders with the sum of their amounts per account
GenericRawResults<Order> rawResults = 
    orderDao.queryRaw(query, orderDao.getRawRowMapper(), param1)

// page through the results
for (Order order : rawResults) {
  System.out.println("Account-id " + order.accountId + " has "
    + order.totalOrders + " total orders");
}

rawResults.close();

Dao重要なのは、マッピングを処理するを使用して、オブジェクトから行マッパーをプルするgetRawRowMapper()ことです。これが見つけた人の助けになることを願っています。

私はまだ 内で結合を行う機能が欲しいと思っていますがQueryBuilder、それがサポートされるまでは、私の意見ではこれが次善の策です。

于 2012-08-20T18:25:12.043 に答える