我目前有一个userIds列表,我正在尝试创建一个查询来从我的数据库中获取所有这些。
这就是我想到的,我只是不确定它是否可能:
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
答案 0 :(得分:3)
尝试使用IN
查询,它会运行得更快+你可以缓存你的Query对象。
所以我们说你有
List<String> userIds;
您可以通过以下方式获取列表:
qb.where(Properties.UserId.in(userIds))
如果这是您经常进行的操作,最好缓存查询。为此,请按如下方式准备查询一次:
Query<User> query = qb.where(Properties.UserId.in("?")).build();
然后当你需要运行它时:
query.setParameter(0, userIds);
return query.list();