【0160】【GreenDao开源框架】
1.GreenDao的认识
1.1 简单的介绍

【官网地址】http://greenrobot.org/greendao/

【ORM】
对象-关系映射(OBJECT/RELATIONALMAPPING,简称ORM),
是随着面向对象的软件开发方法发展而产生的。
用来把对象模型表示的对象映射到基于S Q L 的关系模型数据库结构中去。
这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的 SQ L 语句打交道,
只需简单的操作实体对象的属性和方法。
O R M 技术是在对象和关系之间提供了一条桥梁,
前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化。

1.2 GreenDao的优点



2.Greendao学习方法和相关资源下载

【下载代码】下载代码的时间和编译可能比较长




1.5 【eclipse中使用该框架】下载对应的jar包;


【生成接口层的代码】使用下面的代码生成接口层的代码

【生成代码】新建工程,将jar包拷贝到lib(新建lib)目录下,然后在BuildPath下添加jar包;






3.GreenDao相关操作
3.1 新建Android 工程




3.2 数据的增加










3.3 数据的查询




3.4 数据的修改


3.5 数据的删除


4. AndroidStudio配置greendao


1 compile 'de.greenrobot:greendao:2.0.0' //添加greendao的依赖




1 compile 'de.greenrobot:greendao-generator:2.0.0' //添加greendao-generator的依赖
【生成java的文件】建立了两张表:son和father;关联的值是fatherId;




4.2 取得表对象

4.3 对表进行操作
【说明】插入son表和father表,然后fatherId值与sonId值关联;




5.GreenDao查询(懒加载)
5.1 正常加载-加载到内存中


【说明】直接通过list将数据加载到内存中;



05-20 03:48:29.523: D/oztaking(9536): queryAll() called with:Son{id=1, age=15, name='宝宝', fatherId=1, daoSession=www.ozTaking.com.DaoSession@3bfbb47b, myDao=www.ozTaking.com.SonDao@d4b8298, father=null, father__resolvedKey=null} 05-20 03:48:29.524: D/oztaking(9536): queryAll() called with:Son{id=2, age=15, name='宝宝', fatherId=2, daoSession=www.ozTaking.com.DaoSession@3bfbb47b, myDao=www.ozTaking.com.SonDao@d4b8298, father=null, father__resolvedKey=null}
5.2【懒加载】
【懒加载】
懒加载(LazyLoad)一直是前端的优化方案之一。
它的核心思想是:当用户想看页面某个区域时,再加载该区域的数据。这在一定程度上减轻了服务器端的压力,也加快了页面的呈现速度。



【关闭游标】

5.3 遍历实体查询
【说明】好处是可以控制条件没有必要将数据全部list打印出来;



5.4


【说明】在控制台打印出了greenDao自己拼接的sql数据;

5.4 查询的源码的查看
【list源码的查看】


【listLazy源码的查看】考虑到了并发和内存加载的效率问题;


6. 条件查询



6.1 eq关键字的使用
【eq查询】查询名字是“nate”的数据;


【查询结果】

6.2 like关键字的使用
【包含有关键字的模糊查询】




【增加通配符的数据的查询】


6.3 between数据的查询
【范围条件】查询年龄在20-30岁之间的人员;



6.4 “大于”“小于”“不等于”“大于等于”“小于等于”条件的查询




6.5 升/降排序
【说明】以名称为“nate”的年龄数据的升序的排序;


7.GreenDao原生sql语句查询
【说明】自定义语句然后原生查询
【地址】http://greenrobot.org/greendao/documentation/queries/

【说明】父亲的年龄小于45岁的儿子有哪些?只能通过我们自己实现的语句进行查询




8.GreenDao多线程查询
【说明】一般的多线程查询就是使用锁然后增加同步的处理;此方法的弊端是:导致运行性能慢,因为一次只能有一个线程查询;
但是:greenDao没有这样做,而是开辟了多个线程,然后 每个线程都有一个查询的对象;如果对象创建的线程和查询调用的线程不是一个线程,则会出现异常;
从而保证查询的正确性;
【错误的实例】



【修改之后的代码】

【源码分析】



9.GreenDao 1v1查询
【说明】在建表的时候,son表指向了father表的一个主键,将两个表进行了关联;之前的表的查询都是单表查询(只查son表或者只查询father表)
现在通过son表中的信息查询到father表中的信息;
【说明】通过son的信息查询到了father的信息;



【源码分析】


10. 1-V-n的模型建立和查询
10.1 1-V-n的模型建立
【说明】重新建立son和father的关系






10.2 1-V-n的数据的查询



浙公网安备 33010602011771号