2

我目前有一个 userId 列表,我正在尝试创建一个查询以从我的数据库中获取所有这些。

这就是我的想法,我只是不确定它是否可能:

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查询,它会运行得更快+您可以缓存您的查询对象。所以可以说你有

List<String> userIds;

您可以通过以下方式获取列表:

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

如果这是您经常执行的操作,最好将 Query 缓存起来。为此,只需按如下方式准备一次查询:

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

然后当你需要运行它时:

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