如何在 greenDAO 中使用 OR 查询?

How to use OR queries in greenDAO?

我有一个查询:

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

我知道如何为单个用户执行此操作,但我不知道如何在以下查询中使用 or

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

为了在 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

试试这个:

QueryBuilder<User> qb = dao.queryBuilder();
qb.whereOr(UserDao.Properties.UserId.eq(userId1), 
UserDao.Properties.City.eq("delhi"));
List<User> users = qb.list();

对于版本 3.2.+,这里是一个使用 Where()WhereOr() 条件组合的示例。以下是对 select 所有项目的假设查询:

  1. 具有标签 'paint'、'emulsion'
  2. 属于特定类别
  3. 排除特定子类别

Where()方法只取一个查询条件,WhereOr()可以取多个查询条件(与Dao中的属性个数一样多Class),用逗号分隔

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