GreenDao3.0的使用方法總結

? ? ? ? 最近一段時間通過對數(shù)據(jù)庫操作的新方法的學習,發(fā)現(xiàn)了一種操作簡單的框架,所以小弟在這里進行了一下簡單總結,希望能幫到其他開發(fā)學習者,接下來讓我們了解下這個框架,greenDAO是一個對象關系映射(ORM)的框架,能夠提供一個接口通過操作對象的方式去操作關系型數(shù)據(jù)庫,它能夠讓你操作數(shù)據(jù)庫時更簡單、更方便。

一,首先我們先了解下GreenDao優(yōu)點

1,性能高,號稱Android最快的關系型數(shù)據(jù)庫.

2,內存占用小.

3,庫文件比較小,小于100k.

4,支持數(shù)據(jù)庫加密greendao支持SQLCiPher.

5,簡潔易用的API.

二,總結一下GreenDao的使用方法。

1.首先我們在project的gradle文件中引入greenDAO插件,引入之后如下:

project的gradle文件的配置

然后在module的gradle文件中添加greenDAO的插件,并引入相關類庫,修改之后的效果如下:

module的gradle文件配置

我們首先應該引入相關插件,然后在dependencies中引入greenDAO的類庫。至于greendao中,schemaVersion表示數(shù)據(jù)庫版本號,當我們的數(shù)據(jù)庫需要升級時我們修改這里的版本號即可(修改這里的版本號,greendao會自動修改生成到DAOMaster中的版本號),targetGenDir表示greenDAO生成的DAOMaster和DaoSession的位置。準備好后我們就已經(jīng)成功將greenDAO引入到我們的項目中了。

2.數(shù)據(jù)庫初始化

數(shù)據(jù)庫引入成功后,在使用時,我們需要構建一個實體類

數(shù)據(jù)庫實體類

@Entity表示這個實體類,點擊編譯按鈕后一會會在數(shù)據(jù)庫中生成對應的表,@Id表示該字段是Id,我們注意到該字段的數(shù)據(jù)類型為包裝類型Long,為什么要用包裝類型呢?因為插入數(shù)據(jù)時第一個參數(shù)是ID,如果為null,字段會自動增長。@Property則表示該屬性將作為表的一個字段,其中nameInDb是這個屬性在數(shù)據(jù)庫中對應的數(shù)據(jù)名稱。到這里,寫完這些之后將項目進行編譯,編譯成功之后系統(tǒng)會幫助我們生成相應的構造方法和get/set方法,并且還會在我們的包下生成DaoMaster和DaoSession(在這里提醒下所謂的編譯就是點擊下那個同步/編譯的按鈕,所有需要的類個方法就自動生成了,具體可參考小弟github上的小demo)。這里知識常用的注解,還有其他的注解需要的同學們可以自行查詢。

當我們把這一步做完之后,我們就可以進行數(shù)據(jù)庫的初始化了,具體操作如下:

數(shù)據(jù)庫的初始化

首先獲取一個DevOpenHelper對象,這個類有點類似于我們使用的SqliteOpenHelper,我們主要在這個類中對數(shù)據(jù)庫的版本進行管理。我們對數(shù)據(jù)庫基本的初始化操作就完成了,玩過hibernate的小伙伴都知道,想要操作User實體類,得先有一個UserDao,這個UserDao要怎么獲取呢?在上圖中我們可以看到已經(jīng)獲取到了。

到現(xiàn)在這一步,基本準備工作我們已經(jīng)做完了,接下來我們就可以對數(shù)據(jù)庫進行操作了,哈哈哈

放松一下

3.添加數(shù)據(jù)

數(shù)據(jù)庫的增刪改查我們都需要通過UserDao來操作,插入具體操作如下:

添加數(shù)據(jù)

User的第一個參數(shù)為id,這里傳null的話在插入的過程中id字段會自動增長,第二個參數(shù)是username,每次插入時生成一個隨機數(shù),避免重復。

4.刪除數(shù)據(jù)

刪除數(shù)據(jù)和修改數(shù)據(jù)的思路一樣,都是要先查找到數(shù)據(jù):where表示查詢條件,這里我是查詢id小于等于9的數(shù)據(jù),where中的參數(shù)可以有多個,就是說可以添加多個查詢條件。最后的list表示查詢結果是一個List集合,如果你只想查詢一條數(shù)據(jù),最后unique即可。當然,我們也可以根據(jù)id來刪除數(shù)據(jù),具體操作如下:

刪除數(shù)據(jù)

5.修改數(shù)據(jù)

修改數(shù)據(jù)也是先查詢,再進行修改:

修改數(shù)據(jù)

這里我添加了兩個查詢條件,一個是id要大于等于9,同是還要滿足username like %haha%,特別注意最后的unique表示只查詢一條數(shù)據(jù)出來即可。

6.查詢數(shù)據(jù)

查詢數(shù)據(jù)

其實上面刪除和修改都已經(jīng)涉及到查詢了,查詢里邊有許多非常好用的函數(shù),我這里舉兩個例子between表示查詢id介于1到15之間的數(shù)據(jù),limit表示查詢5條數(shù)據(jù)。

7.數(shù)據(jù)庫升級

數(shù)據(jù)庫的升級其實就兩個步驟我們來看看:

7.1修改gradle文件

首先在module的gradle文件中修改版本號:

更新版本號為2

7.2修改實體類

實體類修改

重新進行編譯即可修改成新的實體類。

一般的數(shù)據(jù)庫升級這樣就可以了,特殊情況可能需要自己編寫數(shù)據(jù)庫遷移腳本,這種時候可以自定義DBHelper,定義方式如下,注意繼承類:

DBHelper ? extends ? ?DaoMaster.OpenHelper {

? public ? ?static ? ?final ? ?String ? ?DBNAME?="lenve.db";

? public ? ?DBHelper(Context?context)?{

? super(context,?DBNAME,null);

?}

@Override

public ? ?void ? ?onUpgrade(SQLiteDatabase ? ?db,int ? ?oldVersion,int ? ?newVersion)?{

super.onUpgrade(db,?oldVersion,?newVersion);

}

}

可以在onUpgrade方法中進行數(shù)據(jù)庫的更新修改,如果自定義了DBHelper,則數(shù)據(jù)庫的初始化變?yōu)槿缦路绞剑?/p>

DBHelper?devOpenHelper?=newDBHelper(this);

DaoMaster?daoMaster?=newDaoMaster(devOpenHelper.getWritableDb());

DaoSession?daoSession?=?daoMaster.newSession();

userDao?=?daoSession.getUserDao();

OK,這就是greenDAO數(shù)據(jù)庫框架的一個簡單學習過程。僅作為自己的一個學習記錄。

具體可參考小弟上傳到github上的demo:https://github.com/liuxinggithub/greendao.git

本文參考了網(wǎng)上資料,總結了一下使用方法,方便更多使用者的使用。

參考文檔:blog.csdn.net/u012702547/article/details/52226163

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、關于greenDAO greenDAO應該算是當前最火的數(shù)據(jù)庫開源框架了,它是一個將對象映射到SQLite數(shù)據(jù)...
    當幸福來敲門58閱讀 14,043評論 3 19
  • GreenDao 介紹:greenDAO是一個對象關系映射(ORM)的框架,能夠提供一個接口通過操作對象的方式去操...
    小董666閱讀 853評論 0 1
  • 1. 什么是greenDao 弄明白greenDao之前我們應該先了解什么是ORM(Object Relation...
    看一季殘花落幕閱讀 2,667評論 0 4
  • GreenDAO簡介 在Android項目開發(fā)過程中,sqlite來保存數(shù)據(jù)。由于原生api用起來比較麻煩,所以現(xiàn)...
    Rave_Tian閱讀 1,316評論 2 1
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,835評論 18 399

友情鏈接更多精彩內容