您的位置:首页 > 移动开发 > Android开发

Android greenDAO 数据库框架接入指南

2017-03-05 18:48 489 查看

1 关于GreenDAO

greenDao是一个将对象映射到SQLite数据库中的轻量且快速的ORM解决方案。可以说它是专门为android平台下优化的ORM数据库,关于greenDAO的详细资料可以看官网greenDao

greenDAO 主要有以下几大优势:

1、一个精简的库

2、性能最大化

3、内存开销最小化

4、易于使用的 APIs

5、对 Android 进行高度优化

下面截取一张官方的关于GreenDao,ORMLite,ActiveAndroid这三个数据库的性能对比图:



可以看到greenDAO相比其他的数据库在插入和读取上有压倒性的优势,这个对于我们客户端来说太重要了,因为我们客户端经常会读取数据库。好了,下面介绍greenDAO的使用方法。

2 greenDAO 3.x的使用

1 在as中导入相关的包

我这里导入的是3.2.0版本

apply plugin: 'org.greenrobot.greendao'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
}
}
dependencies {
....
compile 'org.greenrobot:greendao:3.2.0'
....
}


以上代码主要在你的项目下要引入数据库模块的module build.gradle下配置。

2 自定义greenDao相关路径

使用greenDAO的方便之处就是很多相关数据库的代码,我们可以使用greenDAO自动生成,但是我们需要指定生成的路径。

在我们module 下的 build.gradle配置以下代码:

greendao {
schemaVersion 1
daoPackage 'com.qiyei.funny.greendao.gen'
targetGenDir 'src/main/java'
}


属性介绍:

schemaVersion–> 指定数据库schema版本号,迁移等操作会用到;

daoPackage –> dao的包名,包名默认是entity所在的包;

targetGenDir –> 生成数据库文件的目录;

好,基本上我们已经完成greenDAO的配置了,配置过程也很简单,现在我们需要同步一下工程。

3 创建实体类,并生成DaoSession及DaoMaster

我们首先创建以下实体类,并使用greenDAO中的注解来指明实体及字段

@Entity
public class User {
@Id
private Long id;
private String name;
private String sex;
}


greendao中的注解

(一) @Entity 定义实体

@nameInDb 在数据库中的名字,如不写则为实体中类名

@indexes 索引

@createInDb 是否创建表,默认为true,false时不创建

@schema 指定架构名称为实体

@active 无论是更新生成都刷新

(二) @Id

(三) @NotNull 不为null

(四) @Unique 唯一约束

(五) @ToMany 一对多

(六) @OrderBy 排序

(七) @ToOne 一对一

(八) @Transient 不存储在数据库中

(九) @generated 由greendao产生的构造函数或方法

我们创建了一个名为User的实体,并且指定了@Entity为User,@Id为id ,这里我们不用编写setter/getter方法,直接make project,神奇的事情出现了,我们会看到我们的工程为生成如下的代码及文件:

/**
* Created by qiyei2015 on 2016/12/11.
* 1273482124@qq.com
*/
@Entity
public class User {
@Id
private Long id;
private String name;
private String sex;
@Generated(hash = 1265202627)
public User(Long id, String name, String sex) {
this.id = id;
this.name = name;
this.sex = sex;
}
@Generated(hash = 586692638)
public User() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return this.sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}


同时在com.qiyei.funny.greendao.gen包下会有以下三个文件生成。



可以看到,我们的@Entity就是制定了我们的新建了一张名字为User的表

接下来我们就正式的访问我们的数据库了,并进行增删改查的操作。

4 初始化数据库

/**
* 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
* 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
* 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
* 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
*/
// 1 新建数据库funny.db
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(getApplicationContext()
,"funny.db");

// 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDb());
DaoSession daoSession = daoMaster.newSession();


以上步骤主要有以下几步:

1 新建数据库,使用DaoMaster.DevOpenHelper来实现。

2 获取DaoMaster对象,这个主要是为了我么后面获取DaoSession,通过DaoSession 我们才可以获取我们的实体的Dao。这里使用devOpenHelper.getWritableDb()来实现

3 获取DaoSession 对象。

以上我们就完成了数据库的初始化,接着我们是得到我们的User的Dao,如下:

UserDao userDao = daoSession.getUserDao();


得到了我们User的Dao我们 就可以进行数据库的增删查改了。

User 的插入

userDao.insert(new User(2L,"hello","boy"));


User的删除

userDao.deleteByKey(id);


User的修改

可以使用UserDao的update方法

public void update(T entity)


User的查询

QueryBuilder builder = userDao.queryBuilder();
List<User> list = builder.where(UserDao.Properties.Name.eq("hello")).list();


这样我们就完成了greenDAO的基本使用了。

关于greenDAO的使用可以参考官方的文档greenDAO官方文档

后面会写根据项目对greenDAO进行业务封装,敬请期待!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  greenDAO