所以我一直在努力让这个查询与GreenDao一起工作,而我的问题是查询的开始,它(使用rawquery)在where子句之后开始。
甚至可以使用GreenDao进行此查询,还是必须使用标准SQL查询访问数据库而不使用GreenDao?
echo $video->thumbnail->getNameSpaces(true);
echo $video->thumbnail->getNameSpaces(true)['url'];
echo $video->thumbnail->getNameSpaces(true)->url;
答案 0 :(得分: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();
答案 1 :(得分:1)
您可以使用GreenDao的CountQuery类执行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();
答案 2 :(得分:1)
我用库创建了一个pull request,并添加了一个函数来构建具有不同列表达式的计数查询。
答案 3 :(得分:0)
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/
希望它有所帮助。