我有一个类似的查询:
Select * from table where user = 'user1' or city = 'delhi';
我知道如何为单个用户执行此操作,但我无法获得如何在后续查询中使用or
。
dao.queryBuilder()
.where(UserDao.Properties.UserId.eq(userId1))
.list();
答案 0 :(得分:1)
为了在greenDAO中使用or
条件,您必须在QueryBuilder对象中使用or
方法。
例如:
QueryBuilder<User> qb = dao.queryBuilder();
qb.where(UserDao.Properties.UserId.eq(userId1), qb.or(UserDao.Properties.City.eq("delhi")));
List<User> users = qb.list();
有关详细信息,请参阅greenDAO文档中的"Queries" section。
答案 1 :(得分:1)
试试这个:
QueryBuilder<User> qb = dao.queryBuilder();
qb.whereOr(UserDao.Properties.UserId.eq(userId1),
UserDao.Properties.City.eq("delhi"));
List<User> users = qb.list();
答案 2 :(得分:1)
对于3.2。+版,这是结合使用Where()
和WhereOr()
条件的示例。以下是一个假设查询,用于选择所有项目:
Where()
方法只接受一个查询条件,而WhereOr()
则可以接受多个查询条件(与Dao类中的属性数量一样多),以逗号分隔
String catgId = "AB12545";
String excludeSubCatgId = "SAB09990";
DaoSession daoSession = ((App) getApplication()).getDaoSession();
List<Item> = daoSession.getItemDao().queryBuilder()
.where(ItemDao.Properties.CategoryId.eq(catgId))
.where(ItemDao.Properties.SubCategory.notEq(excludeSubCatgId))
.whereOr(ItemDao.Properties.ItemTagCloud.like("%paint%"),
ItemDao.Properties.ItemTagCloud.like("%emulsion%"))
.orderDesc(ItemDao.Properties.ItemPrice)
.list();