Android實戰——GreenDao3.2的使用,愛不釋手

來源:互聯網
上載者:User

標籤:ppi   基本概念   tor   use   重要   原因   update   asc   lis   

本篇文章包括以下內容:

  • 前言
  • GreenDao3.2的簡介
  • GreenDao3.2的配置
  • GreenDao3.2的使用
  • 結語

GreenDao是一款操作資料庫的神器,經過了2.0版本的升級後,已經被廣泛的開發人員使用。確實是很好用,入門簡單,可以剩去了資料庫的建表操作和資料庫SQL的編寫,博主用了一次之後愛不釋手,和以前的資料庫操作一大堆的代碼將它縮成了一句話,舒服

認識GreenDao之前必須知道ORM(Object Relation Mapping對象關係映射),其表現形式就是通過GreenDao將資料庫和Bean對象關聯起來,其表現形式如

GreenDao之所以很流行,跟它的優點是息息相關的,從官網中可以看到這樣一張圖,其表示了在主流的ORM第三方庫中,其對資料庫操作的速度是最快的

不僅如此,其優點還包括有以下幾點

  • 存取速度快
  • 支援資料庫加密
  • 輕量級
  • 啟用實體
  • 支援緩衝
  • 代碼自動產生

GreenDao的配置很簡單,不過需要注意的是,有些人按照正確的配置後卻頻頻出錯,個人也經曆過,最後的原因是網路有問題。因為校園網的DNS服務很差,所以解析不到GreenDao的依賴網站

一、需要在工程(Project)的build.gradle中添加依賴

二、在項目(Module)的build.gradle中添加依賴

到這裡就配置成功了

配置完成後,最重要的就是GreenDao的使用了,或許使用過Bmob第三方後端雲的同學會知道,他們的API有些相像,都是通過API來拼裝SQL語句的

下面就以購物車的實戰來使用GreenDao,這裡的購物車展示圖如下

我們所知道的資料庫操作需要:資料庫名、表名、欄位名,缺一不可,下面就是這三項的建立

GreenDao需要建立Bean對象之後,該Bean對象就是表名,而它的屬性值就是欄位名,其實現是通過注釋的方式來實現的,下面是購物車的Bean對象(每個Bean對象對應一張表)

這裡需要注意的是,建立完成之後,需要build gradle來完成我們的代碼自動產生。自動產生的程式碼有

  1. Bean實體的構造方法和get、set方法
  2. DaoMaster、DaoSession、DAOS類

這裡對Bean對象的注釋進行解釋

  1. @Entity:告訴GreenDao該對象為實體,只有被@Entity注釋的Bean類才能被dao類操作
  2. @Id:對象的Id,使用Long類型作為EntityId,否則會報錯。(autoincrement=true)表示主鍵會自增,如果false就會使用舊值
  3. @Property:可以自訂欄位名,注意外鍵不能使用該屬性
  4. @NotNull:屬性不可為空
  5. @Transient:使用該注釋的屬性不會被存入資料庫的欄位中
  6. @Unique:該屬性值必須在資料庫中是唯一值
  7. @Generated:編譯後自動產生的建構函式、方法等的注釋,提示建構函式、方法等不能被修改

資料庫的表名和欄位都建好了,下面差個資料庫的建立,下面通過傳統和GreenDao的比較來體驗其優點

① 傳統的資料庫建立

② GreenDao資料庫建立

可以發現,GreenDao已經將我們的資料庫建立縮成幾句話,代碼會自動將Bean對象建立成表,不再是傳統的手寫SQL語句。這裡的資料庫建立只需要在Application中執行一次即可,這裡對幾個類進行解釋

  • DevOpenHelper:建立SQLite資料庫的SQLiteOpenHelper的具體實現
  • DaoMaster:GreenDao的頂級對象,作為資料庫物件、用於建立表和刪除表
  • DaoSession:管理所有的Dao對象,Dao對象中存在著增刪改查等API

由於我們已經建立好了DaoSession和Shop的Bean對象,編譯後會自動產生我們的ShopDao對象,可通過DaoSession獲得

這裡的Dao(Data Access Object)是指資料提供者,即提供了資料庫操作一些API介面,可通過dao進行增刪改查操作

資料庫的表名、欄位、資料庫都建好了,下面就通過傳統和GreenDao對資料庫的操作來比較體驗其優點

① 傳統的增刪改查

② GreenDao增刪改查

效果很明顯,GreenDao的封裝更加短小精悍,語義明朗,qs下面對GreenDao中Dao對象其他API的介紹

  • 增加單個資料
    • getShopDao().insert(shop);
    • getShopDao().insertOrReplace(shop);
  • 增加多個資料
    • getShopDao().insertInTx(shopList);
    • getShopDao().insertOrReplaceInTx(shopList);
  • 查詢全部
    • List< Shop> list=getShopDao().loadAll();
    • List< Shop> list=getShopDao().queryBuilder().list();
  • 查詢附加單個條件
    • .where()
    • .whereOr()
  • 查詢附加多個條件
    • .where(, , ,)
    • .whereOr(, , ,)
  • 查詢附加排序
    • .orderDesc()
    • .orderAsc()
  • 查詢限制當頁個數
    • .limit()
  • 查詢總個數
    • .count()
  • 修改單個資料
    • getShopDao().update(shop);
  • 修改多個資料
    • getShopDao().updateInTx(shopList);
  • 刪除單個資料
    • getTABUserDao().delete(user);
  • 刪除多個資料
    • getUserDao().deleteInTx(userList);
  • 刪除資料ByKey
    • getTABUserDao().deleteByKey();

關於GreenDao的的基本概念與基本操作就講到這裡,更多對於GreenDao的資料庫操作還需要多多從實戰中去探索,這裡只是一個快速入門的引導.GreenDao進階操作還包括有:多表查詢、多表關聯、session緩衝等用法,可以到GreenDao的官網進行學習

Android實戰——GreenDao3.2的使用,愛不釋手

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

Tags Index: