如何在greenDAO中使用OR查询?

时间:2017-03-08 12:30:58

标签: java android greendao

我有一个类似的查询:

Select * from table where user = 'user1' or city = 'delhi';

我知道如何为单个用户执行此操作,但我无法获得如何在后续查询中使用or

dao.queryBuilder()
    .where(UserDao.Properties.UserId.eq(userId1))
    .list();

3 个答案:

答案 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()条件的示例。以下是一个假设查询,用于选择所有项目:

  1. 具有标签“ paint”,“ emulsion”
  2. 属于特定类别
  3. 不包括特定的子类别

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();