GreenDAO之「04.GreenDao的各种查询方法」

来源:互联网 发布:u3d 无法使用java 编辑:程序博客网 时间:2024/05/16 00:45

程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂(来自csdn首页)

在GreenDAO之「02.Eclipse环境下的基本操作」、GreenDAO之「03.AS环境下的基本操作」两篇文章中,我们一起学习了greendao的一些不同环境下的基本操作

那么,这篇文章让我们一起学习一下greendao的各种查询方法

首先,我们看一下greendao四种基本查询方法:

  1. list()
  2. listLazy()
  3. listLazyUncached()
  4. listIterator()

下面我们分别来看一下:

1.list()

其实,我们的list()方法在前两篇文章中我们已经使用了它查询我们添加到数据库中的方法,这里就不贴代码了
它是将所有实体载入内存,以ArrayList形式返回,使用起来也是最简单的

2.listLazy()

下面我们还是使用前两篇文章所写的代码来演示一下listLazy()方法是如何使用的
首先我们将addPerson()方法先注释掉,因为我们的代码已经运行过一次,数据也都插入到数据库当中了
然后我们再新建一个querData()方法
在queryData()方法内部加入以下代码:

LazyList<Son> sonList = sonDao.queryBuilder().listLazy();for (Son son : sonList) {        Log.d("MAIN_TAG", "queryAll() called" + son);                        }sonList.close();

我们可以看到我们调用listLazy()方法返回了一个LazyList类型的对象
然后打印查询结果的方法是与list()方法相同的
其实listLazy()要求实体按需加载到内存。当列表中的其中一个元素第一次被访问,他会被加载并缓存备用,这里我们并没有体会到,这里我们先学习一下他是如何使用的
然后我们应该注意到listLazy()方法使用完之后是必须需要使用close()方法关闭的

3.listLazyUncached()

这个方法使用起来是与listLazy()方法无异的,我们只需要将调用的listLazy()方法修改为listLazyUncached()方法:

LazyList<Son> sonList = sonDao.queryBuilder().listLazyUncached();for (Son son : sonList) {        Log.d("MAIN_TAG", "queryAll() called" + son);                        }sonList.close();

其实,listLazyUncached()方法是创建一个虚拟的实体列表,任何访问列表中的元素都会从数据库中读取
当然,它使用完也是需要关闭的

4.listIterator()

listIterator()方法使用起来就与前面介绍的方法不同了:

Iterator<Son> sonList = sonDao.queryBuilder().listIterator();while (sonList.hasNext()) {     Son son = sonList.next();     Log.d("MAIN_TAG", "queryAll() called" + son);                          }

首先,它返回的是一个Iterator对象,所以我们需要使用一个Iterator对象去接收
然后它在输出数据的时候需要调用一个类似游标的方法
我们使用while循环来遍历sonList中的所有数据,然后打印每一个数据
其实,它是可迭代访问结果集,按需加载数据,数据不缓存

5.查看sql语句的拼装

当我们想看一下greendao到底是如何拼装sql数据的时候
greendao也为我们提供了一种方式
首先,我们在onCreate方法的内部添加两个常量:

QueryBuilder.LOG_SQL = true;QueryBuilder.LOG_VALUES = true;

然后我们直接运行程序,我们在控制台搜索greenDAO标签下的打印数据,我们就可以看到:

这里写图片描述

我们可以看到SELECT T.”NAME”,T.”AGE”,T.”_id”,T.”FATHER_ID” FROM “SON” T 这样一条sql语句

到此,我们greendao几种查询方法学习完成了!

但是感到非常抱歉,这篇文章讲解的内容比较抽象,个人能力有限,但我会在后期将自己的一些理解更新到这篇文章当中!大家也可以先查看一下greenDao官方文档中的一些介绍

接下来的文章,我们将一起学习一下GreenDAO的条件查询,一起期待吧!


往期回顾:
GreenDAO之「01.初始GreenDAO」
GreenDAO之「02.Eclipse环境下的基本操作」
GreenDAO之「03.AS环境下的基本操作」

彩蛋!!

看到这里的朋友你有福利了!我的个人微信公众号上线了!众多热门技术文章,众多有趣好玩的脑洞,请扫描下方二维码关注!

二维码
程序猿干货分享,欢迎您的到来!

0 0
原创粉丝点击