1. 程式人生 > >Android 筆記:GreenDao3.2的使用,愛不釋手

Android 筆記:GreenDao3.2的使用,愛不釋手

今天看了鴻洋大神的公眾號上的,感覺挺好的,轉過來觀摩觀摩。嘿嘿

1前言

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

2GreenDao3.2的簡介

認識GreenDao之前必須知道ORM(Object Relation Mapping物件關係對映),其表現形式就是通過GreenDao將資料庫和Bean物件關聯起來,其表現形式如下圖
這裡寫圖片描述
GreenDao之所以很流行,跟它的優點是息息相關的,從官網中可以看到這樣一張圖,其表示了在主流的ORM第三方庫中,其對資料庫操作的速度是最快的
這裡寫圖片描述


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

•存取速度快

•支援資料庫加密

•輕量級

•啟用實體

•支援快取

•程式碼自動生成

3GreenDao3.2的配置

GreenDao的配置很簡單,不過需要注意的是,有些人按照正確的配置後卻頻頻出錯,個人也經歷過,最後的原因是網路有問題。因為校園網的DNS服務很差,所以解析不到GreenDao的依賴網站
一、需要在工程(Project)的build.gradle中新增依賴
這裡寫圖片描述

二、在專案(Module)的build.gradle中新增依賴
這裡寫圖片描述

到這裡就配置成功了

4GreenDao3.2的使用

配置完成後,最重要的就是GreenDao的使用了,或許使用過Bmob第三方後端雲的同學會知道,他們的API有些相像,都是通過API來拼裝SQL語句的
下面就以購物車的實戰來使用GreenDao,這裡的購物車展示圖如下:
這裡寫圖片描述

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

一、建立Bean物件(表名和欄位名)
GreenDao需要建立Bean物件之後,該Bean物件就是表名,而它的屬性值就是欄位名,其實現是通過註釋的方式來實現的,下面是購物車的Bean物件(每個Bean物件對應一張表)
這裡寫圖片描述

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

這裡需要注意的是,建立完成之後,需要build gradle來完成我們的程式碼自動生成。自動生成的程式碼有
1.Bean實體的構造方法和get、set方法
2.DaoMaster、DaoSession、DAOS類
這裡寫圖片描述

這裡對Bean物件的註釋進行解釋

[email protected]:告訴GreenDao該物件為實體,只有被@Entity註釋的Bean類才能被dao類操作

[email protected]:物件的Id,使用Long型別作為EntityId,否則會報錯。(autoincrement = true)表示主鍵會自增,如果false就會使用舊值

[email protected]:可以自定義欄位名,注意外來鍵不能使用該屬性

[email protected]:屬性不能為空

[email protected]:使用該註釋的屬性不會被存入資料庫的欄位中

[email protected]:該屬性值必須在資料庫中是唯一值

[email protected]:編譯後自動生成的建構函式、方法等的註釋,提示建構函式、方法等不能被修改

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

① 傳統的資料庫建立
這裡寫圖片描述
② GreenDao資料庫建立
這裡寫圖片描述

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

•DevOpenHelper:建立SQLite資料庫的SQLiteOpenHelper的具體實現

•DaoMaster:GreenDao的頂級物件,作為資料庫物件、用於建立表和刪除表

•DaoSession:管理所有的Dao物件,Dao物件中存在著增刪改查等API

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

ShopDao dao = daoSession.getShopDao();

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

三、資料庫的增刪改查

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

① 傳統的增刪改查
這裡寫圖片描述
② GreenDao增刪改查
這裡寫圖片描述
效果很明顯,GreenDao的封裝更加短小精悍,語義明朗,下面對GreenDao中

5Dao物件其他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的使用愛不釋手

今天看了鴻洋大神的公眾號上的,感覺挺好的,轉過來觀摩觀摩。嘿嘿 1前言 GreenDao是一款操作資料庫的神器,經過了2.0版本的升級後,已經被廣泛的開發者使用。確實是很好用,入門簡單,可以剩去了資料庫的建表操作和資料庫SQL的編寫,博主用了一次之後愛不釋

筆記智慧時代未來已來

讀書筆記,資料來源,混沌大學創始人李善友為吳軍《智慧時代》以書作序。 大資料是解決不確定性問題的良藥 吳軍:“用不確定的眼光看待世界,再用資訊來消除這種不確定性。” 吳軍認為,不確定性來自兩個方面: 影響世界的變數太多,以至於無法用數學模型表示。(批註:應該說無法用

Python記錄6函式2函式引數

# 一. 函式引數分為兩大類 # 形參:在函式定義階段括號定義的引數(變數名),稱之為形式引數         #因為函式定義階段只是用一個符號表示表示一個引數,並沒有具體的值,所以稱之為形式引數,形參 # 實參:在函式呼叫階段括號內傳入值

Android筆記String.format()的詳細用法

一直對String.format不瞭解,而且也記不住那麼多,記錄一下以後查起來方便 1 佔位符 1.1 單個佔位符 String s = String.format("Hello %s,Welcome

Java筆記成員變數區域性變數類變數例項變數以及注意事項

區域性變數:方法中定義的變數。 成員變數(類似C中的全域性變數):成員變數定義在方法體和語句塊之外。成員變數就概括描述了類中的變數,不區分static。是以下變數的統稱。 類變數(靜態變數):獨立於方法之外的變數,屬於類本身。需要static修飾,事實上,類變數就是以static修飾的獨立於方法之外的成員

sql學習筆記基礎語法連線建立庫表

#連線庫,設定好環境變數或者右鍵powershell . mysql -u 使用者名稱 -p 密碼 #檢視庫 show databases; #建立庫 create database 庫名 charset utf8;#宣告使用字元 #選擇庫 use 庫名;

使用 RK3399 搭載 Android 系統7.1.2出現 AudioTrack 有時無法播放 PCM 音訊

RK3399 在 Android 系統 7.1.2,出現 AudioTrack 有時無法播放 PCM 音訊的問題 問題背景: 切換 rk3399 後,搭載系統為 Android 7.1.2,如果單獨使用 audiotrack 播放 PCM 音訊是沒有問題,但是應用在智慧家居上,一般都

Xamarin開發Android筆記使用ZXing進行連續掃描

在專案開發中需要使用到條碼掃描,因為以前就測試過ZXing,感覺識別速度和功能都不錯,所以直接引用。不過在實際開發的過程中,卻遇到連續掃描的問題,每次掃描識別完成之後,掃描窗體自動關閉了。 在Xamarin論壇中查詢解決方案,只是找到的iOS版本的解決方案。參考iOS的解決方案,其實就是在掃描完成之後重新開

Android筆記軟鍵盤彈出遮蓋原來介面的佈局控制元件

給Activity設定軟鍵盤出現與Activity之間的互動模式: 1.在onCreat中的setContent方法之前寫入: getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJ

python學習筆記集合set函式基礎

1、遍歷字典     for k,v in d:     則k,v分別是字典中鍵值對的鍵和值 2、字典的推導式     比如d = {x:x**2 for x in range(10)}  &nb

Android筆記淺析Android電視APP開發

TV應用程式使用相同的結構與手機和平板電腦。這種相似性意味著你也可以修改現有的應用程式執行在TV裝置或建立新的應用程式基於你現在已經掌握的Android技術開發應用。 1、建立Android TV工程 本篇部落格主要介紹如何準備您的開發環境,為開發電視應用程

Android 筆記按鈕事件以及案例

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layo

筆記使用hexo如果換了電腦怎麼更新部落格

最近換了工作,忙著熟悉業務,好久沒寫部落格了。換了新環境,好多東西都要重灌。Hexo部落格就是其中之一,這裡我從萬能的知乎上找了一個感覺很讚的方法,現在把文章搬運過來。話不多說,我們快來看看他是怎麼做吧。 一、引言 其實,Hexo生成的檔案裡面是有一個

CS224n學習筆記Lecture1 & 2

p.s. 在對應的assignment1裡第一部分就是針對softmax做的一些練習。softmax有一個特性,那就是平移不變性(我也不知道專業的說法是這個,勿噴),數學表示就是softmax(x) = softmax(x + c),其中c為一個常數或常向量,x是一個向量。這個很好證。實際利用這個特性時,c普

Django學習筆記使用模板通過html頁面代替字串

1.在應用sign/目錄下建立templates/index.html檔案。以下是pycharm開發工具建立資料夾及檔案的截圖。 (Django預設查詢templates/目錄下的HTML檔案,不要隨便命名該目錄名!) 2.編寫index.html檔案內容 3.修改views.py中的i

Android 筆記讀取配置檔案config.properties

開發中有很多配置需要在配置檔案中設定,這樣讀取也方便,修改也方便。 下面就來說一說在Android中怎麼讀取配置檔案。 配置檔案存放的位置是在/src/main/assets下,這個檔案可以手動建也可以系統自己建,推薦大家手動建。 讀取配置檔案: /** *

android 筆記判斷手機是否顯示虛擬按鍵

華為親測有效 public boolean isNavigationBarShow(){ if (Build.VERSION.SDK_INT >= Build.VERSION_

《矽谷之謎》讀書筆記追求卓越改變自己

一、關於此書        幾年前研一的時候閱讀了吳軍博士的《浪潮之巔》,一覽處於浪潮之巔的各個明星IT公司的興衰沉浮,好不過癮。作為《浪潮之巔》的續集,《矽谷之謎》則讓我對矽谷這個神奇的地域有了新的認識,古人有云:羅馬不是一天建成的。同理,矽谷也不是一時就可以發展起來的,吳軍博士對矽谷的起源和發展進行了

學習筆記windows下用c語言來建立執行緒

#include <stdio.h>#include <windows.h> typedef void * HANDLE;#define SEMAPHORE HANDLE#define THREADHANDLE HANDLE#define THREAD

Android筆記視訊直播的原理分析

最近一段時間,視訊直播可謂大火。在視訊直播領域,有不同的商家提供各種的商業解決方案,包括軟硬體裝置,攝像機,編碼器,流媒體伺服器等。本文要講解的是如何使用一系列免費工具,打造一套視訊直播方案。 視訊直播流程 視訊直播的流程可以分為如下幾步: 採集 —&g