Android greenDao开源数据库框架

之前,android的数据库部分,自己一直傻傻地按照最原始的方式:写一个类比如MyDbHelper去继承SQLiteOpenHelper,然后建库,建表,建字段,然后再创建一个类MyDbDao去实现操作数据库的增删改查的方法。

直到在博客上看到大牛写的 LitePal 的使用,才发现原来数据库部分可以这么简化。LitePal的详细地使用可以参考 http://blog.csdn.net/guolin_blog/article/details/38083103 一共九篇,分析讲解得很详细。

后来,发现除了LitePal, 另一个开源的框架 greenDao。在github上比LitePal还要火。所以今天就整理一下greenDao的具体的使用。

greenDao的github下载地址:https://github.com/greenrobot/greenDAO
greenDao的官网:http://greendao-orm.com/

下面是官网给出的greenDao的一些特性

Object/relation mapping (ORM) (对象关系映射)

Performance (性能 高)

Slim library (资源库小 不到100k)

Code generation (代码生成)


快速入门

来看它给出的 DaoExample 示例

1. 创建表

new DaoMaster.DevOpenHelper(this, "notes.db", null);

这里使用DaoMaster这个类可以很方便地获得一个SQLiteOpenHelper,只需传入数据库的表名,就可以帮我们自动创建好数据库了,省去了自己写SQL语句。

2. 插入和删除

  • 预先准备好操作该数据库的对象(noteDao)
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
noteDao = daoSession.getNoteDao();
  • 插入
Note note = new Note(null, noteText, comment, new Date());
noteDao.insert(note);
Log.d("DaoExample", "Inserted new note, ID: " + note.getId());

这里只要创建一个Note对象,并在Dao调用插入方法时传入就算完成了。而且,插入完成时,插入的note的数据库id 就是 这个note对象的id。

  • 删除
noteDao.deleteByKey(id);

删除操作也很直接,就这么一句。

3. 数据模型 和 代码生成
为了创建实体更好的扩展note,我们看下DaoExampleGenerator这个示例,它只有一个类,里面定义了数据模型:

Schema schema = new Schema(1, "de.greenrobot.daoexample");

Entity note= schema.addEntity("Note");
note.addIdProperty();
note.addStringProperty("text").notNull();
note.addStringProperty("comment");
note.addDateProperty("date");

new DaoGenerator().generateAll(schema, "../DaoExample/src-gen");

可以看出,创建的Schema对象,可以来添加实体,并且这个实体与数据库的表有关联,同时,一个实体包含多个属性,这与数据库的列名相互映射。
一旦schema完全定义完成,就可以触发代码生成了,前面的Note.java、noteDao.java 和 DaoMaster.java等文件就是这样来的。


介绍

1. 基本概念
这里写图片描述
greenDAO 是android平台的一个对象关系映射的工具。它为关系型数据库提供了一个面向对象的接口。像greenDao这样的ORM工具,能为我们提供很简单的数据接口 并且 做很多重复的任务。

2. Dao编码生成项目
这里写图片描述
要在android项目中使用greenDao,最好将自动生成的工程(普通的Java Project)放在一个独立的文件夹中,目的是好与你本身的项目区分开来。

3. 核心类
这里写图片描述

一旦生成了代码,就可以使用greenDao了,不要忘记在项目中引入greenDao的核心库(greenDao.jar)。

下面是greenDao的几个基本接口的核心类:

  • DaoMaster:里面有静态的方法来创建或删除表。它是greenDao的入口,掌握这数据库并管理着特定模式的DAO类。

  • DaoSession:管理着所有可以获取到的特定模式的DAO对象,可以通过get方法获取。DaoSession也提供了一些基本的实体增删改查操作的持久化的方法。

  • DAOs:每一个实体,都会生成一个DAO,并且有更多的持久化的方法。

  • Entities:就像JavaBean,通常,是代表使用标准Java属性的数据库的一行。

4. 核心的初始化

helper = new DaoMaster.DevOpenHelper(this, "notes.db", null);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
noteDao = daoSession.getNoteDao();

模型实体

这里写图片描述

1. Schema:

Schema schema = new Schema(1, "de.greenrobot.daoexample");

schema是你定义的第一个对象,参数1是schema的版本,参数2是默认的包名(实体、DAOs、Junit测试用的包名)。
也可以为DAO 和 test类选择不同的包名:

schema.setDefaultJavaPackageTest("de.greenrobot.daoexample.test");
schema.setDefaultJavaPackageDao("de.greenrobot.daoexample.dao");

2:Entities:

Entity user = schema.addEntity("User");

schema有了之后,就可以添加entities了,并且可以改变一些设置,最重要的是,可以增加一些属性到实体上。

user.addIdProperty();
user.addStringProperty("name");
user.addStringProperty("password");
user.addIntProperty("yearOfBirth");

好了,这里只是简单地整理了一下greenDao的相关知识,不够全面,大家可以去它的官网上仔细阅读文档。能做的demo验证验证就更好不过了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章