GreenDao进阶篇(二)

上一篇文章简单介绍了greendao的增删改查的使用,greendao数据库的使用
这篇文章将进一步介绍greendao的复杂检索查询的介绍.

首先介绍一下看下greeendao查询的方法.


    /**
     * 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<T> where(WhereCondition cond, WhereCondition... condMore) {
        whereCollector.add(cond, condMore);
        return this;
    }

从封装的方法中我们可以看到,参数是可以无限添加的,也就是像下边这样的形式.

/**
     * 这是一个根据用户id查询所有创建并完成的所有任务
     *
     * @param uSerUid
     * @return
     */
    public List<Task> 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<Task> tasks) {
        getTaskDao().insertOrReplaceInTx(tasks);
    }

怎么样,通过查看greendao的方法之后,你是否已经深深地爱上它了,没办法,他就是这么好用.如果有什么疑问可以留言给我哦.也可以关注我的个人微信公众平台,更多最新文章,将为您及时奉送.
这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值