上一篇文章简单介绍了greendao的增删改查的使用,greendao数据库的使用
这篇文章将进一步介绍greendao的复杂检索查询的介绍.
/**
* Adds the given conditions to the where clause using an logical AND. To create new conditions, use the properties
* given in the generated dao classes.
*/
public QueryBuilder where(WhereCondition cond, WhereCondition... condMore) {
whereCollector.add(cond, condMore);
return this;
}
从封装的方法中我们可以看到,参数是可以无限添加的,也就是像下边这样的形式.
/**
* 这是一个根据用户id查询所有创建并完成的所有任务
*
* @param uSerUid
* @return
*/
public List queryCreatTaskAndFinish(String uSerUid) {
return getTaskDao().queryBuilder().where(
TaskDao.Properties.Create_uid.eq(uSerUid),//创建人id
TaskDao.Properties.Status.eq("finished")//已完成的
).list();
}
/** Creates an "equal ('=')" condition for this property. */
public WhereCondition eq(Object value) {
return new PropertyCondition(this, "=?", value);
}
/** Creates an "not equal ('<>')" condition for this property. */
public WhereCondition notEq(Object value) {
return new PropertyCondition(this, "<>?", value);
}
/** Creates an "LIKE" condition for this property. */
public WhereCondition like(String value) {
return new PropertyCondition(this, " LIKE ?", value);
}
/** Creates an "BETWEEN ... AND ..." condition for this property. */
public WhereCondition between(Object value1, Object value2) {
Object[] values = { value1, value2 };
return new PropertyCondition(this, " BETWEEN ? AND ?", values);
}
/** Creates an "IN (..., ..., ...)" condition for this property. */
public WhereCondition in(Object... inValues) {
StringBuilder condition = new StringBuilder(" IN (");
SqlUtils.appendPlaceholders(condition, inValues.length).append(')');
return new PropertyCondition(this, condition.toString(), inValues);
}
/** Creates an "IN (..., ..., ...)" condition for this property. */
public WhereCondition in(Collection> inValues) {
return in(inValues.toArray());
}
/** Creates an "NOT IN (..., ..., ...)" condition for this property. */
public WhereCondition notIn(Object... notInValues) {
StringBuilder condition = new StringBuilder(" NOT IN (");
SqlUtils.appendPlaceholders(condition, notInValues.length).append(')');
return new PropertyCondition(this, condition.toString(), notInValues);
}
/** Creates an "NOT IN (..., ..., ...)" condition for this property. */
public WhereCondition notIn(Collection> notInValues) {
return notIn(notInValues.toArray());
}
/**创建一个>某一个数字的属性 */
public WhereCondition gt(Object value) {
return new PropertyCondition(this, ">?", value);
}
/** 创建一个<某个数字的属性 */
public WhereCondition lt(Object value) {
return new PropertyCondition(this, "", value);
}
/** 创建一个>-=某个数字的属性 */
public WhereCondition ge(Object value) {
return new PropertyCondition(this, ">=?", value);
}
/**创建一个<=某个时间段或者数字的属性 */
public WhereCondition le(Object value) {
return new PropertyCondition(this, "<=?", value);
}
/** 创建一个字段为空的属性 */
public WhereCondition isNull() {
return new PropertyCondition(this, " IS NULL");
}
/** 创建一个字段不能为空的属性*/
public WhereCondition isNotNull() {
return new PropertyCondition(this, " IS NOT NULL");
}
从注释中我们就可以知道如何使用了吧.
当然我个人觉得greendao框架的好处有首先是轻量级,第二个是很多代码都不需要自己实现,第三个就是插入数据库数据的时候,不用担心,因为数据重复导致的问题,直接使用,下边的两个方法,即可实现,插入并更新本地数据的功能.
/**
* 这是一个插入或者更新数据的方法
*
* @param task 任务数据
*/
public void insertOrReplace(Task task) {
getTaskDao().insertOrReplace(task);
}
/**
* 这是一个插入或者更新一条集合数据的方法
*
* @param tasks
*/
public void insertOrReplace(List tasks) {
getTaskDao().insertOrReplaceInTx(tasks);
}
怎么样,通过查看greendao的方法之后,你是否已经深深地爱上它了,没办法,他就是这么好用.如果有什么疑问可以留言给我哦.也可以关注我的个人微信公众平台,更多最新文章,将为您及时奉送.