GreenDao3.0使用

greenDao是一个将对象映射到SQLite数据库中的轻量且快速的ORM解决方案。

ORM:对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。

 

 

 

ormLite的区别:ormLite是基于反射和注解,效率比较低,占用内存内存大

GreenDao是对象关系映射,效率高,占用内存小

greenDAO 优势

1、一个精简的库

2、性能最大化

3、内存开销最小化

4、易于使用的 APIs

5、对 Android 进行高度优化

 

GreenDao 3.0使用

GreenDao 3.0采用注解的方式来定义实体类,通过gradle插件生成相应的代码。

 

要在新建的module模块对应的build.gradle里面配置依赖包以及生成类的位置

compile 'org.greenrobot:greendao:3.2.0'

在顶部声明部位

apply plugin: 'org.greenrobot.greendao'

 

要在project对应项目的build.gradle里面配置依赖包

classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'

 

三,自定义路径

greendao {    schemaVersion 1   //数据库的版本号    daoPackage 'com.anye.greendao.dao'   //生成核心类DaoMaster、DaoSession、Dao的包目录    targetGenDir 'src/main/java'  //生成的源文件储存目录}

 

四,创建一个User的实体类

@Entity

public class User {

@Id

private Long id;

private String name;

@Transient

private int tempUsageCount; // not persisted

}

之后编译  会自动生成get set 方法  在'com.anye.greendao.gen'下面自动生成3个类

 

,注解

实体类注解:

@Entity 用于标识这是一个需要Greendao帮我们生成代码的bean

smeInDb 就是写个存在数据库里的表名(不写默认是一致)

inchema是一个项目中有多个schema时 标明要让这个dao属于哪个schema

active 是标明是否支持实体类之间update,refresh,delete等操作 相当于2.2版本的

nadexes 定义索引,这里可跨越多个列

CreateInDb 如果是有多个实体都关联这个表,可以把多余的实体里面设置为false避免重复创建(默认是true)

 

@Id 标明主键括号里可以指定是否自增 相当于2.2版本的

@Property 用于设置属性在数据库中的列名(默认不写就是保持一致)

@Property(nameInDb = “STUDENTNUM”)  表名这个属性对应数据表中的 STUDENTNUM 字段。 

@NotNull 非空

@Transient 标识这个字段是自定义的不会创建到数据库表里 相当于2.2版本的

 

索引注解:

@Index 通过这个字段建立索引

@Unique 添加唯一约束,上面的括号里unique=true作用相同

 

关系注解:

@ToOne 是将自己的一个属性与另一个表建立关联,相当于2.2版本的

@ToMany 的使用场景有些多,下面的代码默认折叠起来

@ToMany 的属性referencedJoinProperty,类似于外键约束。

@JoinProperty 对于更复杂的关系,可以使用这个注解标明目标属性的源属性。

@JoinEntity 如果你在做多对多的关系,有其他的表或实体参与,可以给目标属性添加这个额外的注解(感觉不常用吧)

 

派生注解:

@Generated 这个是build后greendao自动生成的,这个注解理解为防止重复,每一块代码生成后会加个hash作为标记。 官方不建议你去碰这些代码,改动会导致里面代码与hash值不符。

 

GreenDao自动生成的3个核心类

DaoMaster 

daomaster以一定的模式持有数据库对象(SQLiteDatabase)并管理一些DAO类(而不是对象)。 有一个静态的方法创建和drop数据库表。它的内部类OpenHelperDevOpenHelperSQLiteOpenHelper的实现类,用于创建SQLite数据库的模式。

DaoSession 

管理指定模式下所有可用的DAO对象,你可以通过某个get方法获取到。DaoSession提供一些通用的持久化方法,比如对实体进行插入,加载,更新,刷新和删除。最后DaoSession对象会跟踪identity scope,更多细节,可以参看 session文档。

DAOsData access objects

数据访问对象,用于实体的持久化和查询。对于每一个实体,greenDao会生成一个DAO,相对于DaoSession它拥有更多持久化的方法,比如:加载全部,插入(insertInTx,语境不明了,暂且简单的翻译成插入)。

 

GreenDao  使用

一般数据库的操作都离不开增删改查,那么我们就从这开始。

初始化

DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(getApplicationContext(), "student.db", null);DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDb());DaoSession daoSession = daoMaster.newSession();

如果实体类有更新,那么要调用 daoSession.clear() 清除缓存,才能得到更新。 

 

GreenDao多表查询是通过表的主键和外键进行查询的 有三种方式\ 一对一 一对多 多对多

http://www.cnblogs.com/ZWRpoi/p/6226269.html

http://www.jianshu.com/p/dbec25bd575f

 

 

版本升级更新

比如需要在实体类加一个字段 或者 改变字段属性等 就需要版本更新来保存以前的数据了;

创建临时表-->删除原表-->创建新表-->复制临时表数据到新表并删除临时表

http://www.jianshu.com/p/f13ba77ed126

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值