Android数据库-greenDao3.2.2初体验(下)-简单的查询和删除操作

上一篇讲到了greenDao3.2.2的集成与最基本的增查改删(CRUD)操作,接下来讲一讲更细致的一些简单且常用的查找、删除操作


  • 查找(Read)操作

我们可以根据非主键来进行查找,具体方法是通过,greenDao对应的Properties来获取到你的键名称,从而根据对应的字段进行查找,具体实现如下:

/**
     * 按照指定字段进行查询,查询结果是一个数据集
     * @param conditions
     * @return
     */
    public static List searchByCondition(String conditions){
        try {
            return DataBaseUtils.getDaoSession().getTestDbDao().queryBuilder().where(TestDbDao.Properties.Uiname.eq(conditions)).list();
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    //下面还提供了查询单条数据的方法,如果需要可以自己封装
    //TestDb testDb =  DataBaseUtils.getDaoSession().getTestDbDao().queryBuilder().where(TestDbDao.Properties.Uiname.eq(conditions)).unique();


  • 删除(Delete)操作

上一篇讲到的删除操作也只是根据主键进行删除,但是根据其他条件进行删除的话,貌似greenDao没有提供相应的方法,我看了一下源码,即便是删除对象的方法,其根本也是根据主键来删除的。所以这时只能让人想到曲线救国的路线了,那就是根据上面查找单条数据的方法,和删除操作结合起来使用,也就是说对单条数据查询获取到对应主键,然后根据主键进行删除。
具体做法如下:

/**
     * 通过其他字段去删除
     * 思路是先查询到对应的数据,然后获取该条数据对应的主键,用对应主键进行删除
     * @param otherKey
     * @return
     */
    public static boolean deleteByOtherKey(String otherKey){
        TestDb testDb =  DataBaseUtils.getDaoSession().getTestDbDao().queryBuilder().where(TestDbDao.Properties.Uiname.eq(otherKey)).unique();
        if (testDb != null){
            try {
                DataBaseUtils.getDaoSession().getTestDbDao().deleteByKey(testDb.getPrimid());
                return true;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return false;
    }

以上就是greenDao的简单的查询和删除操作。

你可能感兴趣的:(adnroid)