Android greenDAO 数据库框架接入指南

来源:互联网 发布:mysql 导出表命令 编辑:程序博客网 时间:2024/04/27 15:00

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中的注解来指明实体及字段

@Entitypublic 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 */@Entitypublic 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进行业务封装,敬请期待!

0 0
原创粉丝点击