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驗證驗證就更好不過了。

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