Greendao 非重复计数查询
Greendao Distinct count query
所以我一直在努力让这个查询与 GreenDao 一起工作,我的问题是查询的开始,它(使用 rawquery)在 where 子句之后开始。
甚至可以使用 GreenDao 执行此查询,还是我必须使用标准 SQL 不使用 GreenDao 访问数据库的查询?
select count (distinct VISIBLE_PAGE_ID) from HOME_ITEM2 where IS_VISIBLE=1 and IS_ACTIVE = 1
所以我只用 SQL 就可以做到这一点,不知道是否有任何 BuildIn 方法可以做同样的事情:
String query = "SELECT COUNT (DISTINCT "
+ HomeItem2Dao.Properties.VisiblePageId.columnName+
") from "
+ HomeItem2Dao.TABLENAME
+ " where "
+ HomeItem2Dao.Properties.IsVisible.columnName + " = 1 and "
+ HomeItem2Dao.Properties.IsActive.columnName + " = 1";
Integer count = 0;
Cursor cursor =
MainApplication.getInstance().getDaoSession().getDatabase().rawQuery(
query, null
);
if(cursor.moveToFirst()){
count = cursor.getInt(0);
}
cursor.close();
实际上GreenDao中有CountQuery
。看看这些链接:
http://greenrobot.org/files/greendao/javadoc/2.1/de/greenrobot/dao/query/CountQuery.html
http://greendao-orm.com/2012/06/08/greendao-1-2-release/
希望对您有所帮助。
您可以使用 GreenDao 的 CountQuery class 来执行 count(*) 次查询。在使用 QueryBuilder 时使用 buildCount() 方法而不是 build() 方法。示例如下。
HomeItem2 homeItem2Dao = ((Application) context.getApplicationContext())
.getDaoSession().getHomeItem2Dao();
QueryBuilder<HomeItem2> queryBuilder =
homeItem2Dao.queryBuilder().where(
HomeItem2Dao.Properties.IsVisible.eq(true),
HomeItem2Dao.Properties.IsActive.eq(true));
return queryBuilder.buildCount().count();
我创建了一个 pull request 库,其中添加了一个函数来构建具有不同列表达式的计数查询。
所以我一直在努力让这个查询与 GreenDao 一起工作,我的问题是查询的开始,它(使用 rawquery)在 where 子句之后开始。
甚至可以使用 GreenDao 执行此查询,还是我必须使用标准 SQL 不使用 GreenDao 访问数据库的查询?
select count (distinct VISIBLE_PAGE_ID) from HOME_ITEM2 where IS_VISIBLE=1 and IS_ACTIVE = 1
所以我只用 SQL 就可以做到这一点,不知道是否有任何 BuildIn 方法可以做同样的事情:
String query = "SELECT COUNT (DISTINCT "
+ HomeItem2Dao.Properties.VisiblePageId.columnName+
") from "
+ HomeItem2Dao.TABLENAME
+ " where "
+ HomeItem2Dao.Properties.IsVisible.columnName + " = 1 and "
+ HomeItem2Dao.Properties.IsActive.columnName + " = 1";
Integer count = 0;
Cursor cursor =
MainApplication.getInstance().getDaoSession().getDatabase().rawQuery(
query, null
);
if(cursor.moveToFirst()){
count = cursor.getInt(0);
}
cursor.close();
实际上GreenDao中有CountQuery
。看看这些链接:
http://greenrobot.org/files/greendao/javadoc/2.1/de/greenrobot/dao/query/CountQuery.html
http://greendao-orm.com/2012/06/08/greendao-1-2-release/
希望对您有所帮助。
您可以使用 GreenDao 的 CountQuery class 来执行 count(*) 次查询。在使用 QueryBuilder 时使用 buildCount() 方法而不是 build() 方法。示例如下。
HomeItem2 homeItem2Dao = ((Application) context.getApplicationContext())
.getDaoSession().getHomeItem2Dao();
QueryBuilder<HomeItem2> queryBuilder =
homeItem2Dao.queryBuilder().where(
HomeItem2Dao.Properties.IsVisible.eq(true),
HomeItem2Dao.Properties.IsActive.eq(true));
return queryBuilder.buildCount().count();
我创建了一个 pull request 库,其中添加了一个函数来构建具有不同列表达式的计数查询。