2

現在、userIdのリストがあり、DBからそれらすべてを取得するクエリを作成しようとしています。

これは私が念頭に置いていることですが、それが可能かどうかはわかりません。

ArrayList<Users> listOfUsers = getCurrentUsers(); 
// lets assume that by now I have a list of users
QueryBuilder<Users> qb = getUsersDao().queryBuilder();
for(Users usr : listOfUsers) {
    qb.where(Properties.userId.eq(usr.getUserId());
}
List result = qb.list();

これを行う正しい方法についてのドキュメントを見たことがないので、これがGreenDAOで動的クエリを作成する正しい方法であるかどうかを知りたいです。

編集:

私はこれを試しました、そして結果はNullPointerException上の宣言の行にありましたQueryBuilder

4

1 に答える 1

3

代わりにクエリを使用してみてINください。実行速度が速くなり、Queryオブジェクトをキャッシュできます。だからあなたが持っているとしましょう

List<String> userIds;

次のコマンドでリストを取得できます。

qb.where(Properties.UserId.in(userIds))

これが頻繁に行う操作である場合は、クエリをキャッシュすることをお勧めします。これを行うには、次のようにクエリを1回だけ準備します。

Query<User> query = qb.where(Properties.UserId.in("?")).build();

その後、それを実行する必要があるとき:

query.setParameter(0, userIds);
return query.list();
于 2012-10-30T08:24:01.593 に答える