Android GreenDao基本使用
一、關於GreenDao
greenDao應該算是當前最火的資料庫開源框架了,它是一個將物件對映到SQLite資料庫中的輕量且快速的ORM(object / relational mapping)解決方案。
關於greenDAO的其他相關資訊可以看官網greenDAO
二、GreenDao理解
DAO的core library中有以下幾個核心類,也是後面常用到的,先來大概瞭解下他們的結構,不然直接看他們的使用會雲裡霧裡。
DaoMaster:Dao中的管理者。它儲存了sqlitedatebase物件以及操作DAO classes(注意:不是物件)。其提供了一些建立和刪除table的靜態方法,其內部類OpenHelper和DevOpenHelper實現了
SQLiteOpenHelper,並建立資料庫的框架。
DaoSession:會話層。操作具體的DAO物件(注意:是物件),比如各種getter方法。
XXXDao:實際生成的某某DAO類,通常對應具體的java類,比如NoteDao等。其有更多的許可權和方法來操作資料庫元素。
XXXEntity:持久的實體物件。通常代表了一個數據庫row的標準java properties。
三、greenDAO 優勢
優點:一個精簡的庫、效能最大化、記憶體開銷最小化、易於使用的 APIs、對 Android 進行高度優化
四、GreenDao 3.0使用
GreenDao 3.0採用註解的方式來定義實體類,通過gradle外掛生成相應的程式碼。
1,首先在project的gradle檔案中引入greenDAO外掛,引入之後如下:
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-alpha9'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
2,然後在module的gradle檔案中新增greenDAO的外掛,並引入相關類庫,修改之後如下:
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'
android {
...
...
greendao{
schemaVersion 1 //指定資料庫schema版本號,遷移等操作會用到;
daoPackage 'com.greendao.gen'//dao的包名,包名預設是entity所在的包
targetGenDir 'src/main/java' //生成資料庫檔案的目錄
}
}
dependencies {
...
...
compile 'org.greenrobot:greendao:3.1.0'
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
在gradle的根模組中加入上述程式碼,就完成了我們的基本配置了。
3,建立一個User的實體類
@Entity//表示這個實體類一會會在資料庫中生成對應的表
public class User {
@Id //表示該欄位是id,注意該欄位的資料型別為包裝型別Long
private Long id;
@Property(nameInDb = "NAME")//表示該屬性將作為表的一個欄位,其中nameInDb看名字就知道這個屬性在資料庫中對應的資料名稱
private String name;
@Transient //註解表示這個屬性將不會作為資料表中的一個欄位
private int tempUsageCount; // not persisted
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
@Entity表示這個實體類一會會在資料庫中生成對應的表,
@Id表示該欄位是id,注意該欄位的資料型別為包裝型別Long
@Property則表示該屬性將作為表的一個欄位,其中nameInDb看名字就知道這個屬性在資料庫中對應的資料名稱。
@Transient,該註解表示這個屬性將不會作為資料表中的一個欄位。
@NotNull表示該欄位不可以為空
@Unique表示該欄位唯一。小夥伴們有興趣可以自行研究。
4,MakeProject
編譯專案(Android快捷鍵:Ctrl+F9),User實體類會自動編譯,生成get、set方法並且會在com.greendao.gen目錄下生成三個檔案,並且還會在我們的包下生成DaoMaster和DaoSession。
五、GreenDao使用
步驟:即:先建立了一個SQLiteOpenHelper並建立連線到一個具體資料庫;再根據具體的datebase建立一個master物件用於;最後通過master建立一個數據庫的會話操作。
public class MyApplication extends Application {
private DaoMaster.DevOpenHelper mHelper;
private SQLiteDatabase db;
private DaoMaster mDaoMaster;
private DaoSession mDaoSession;
public static MyApplication instances;
@Override
public void onCreate() {
super.onCreate();
instances = this;
setDatabase();
}
public static MyApplication getInstances(){
return instances;
}
/**
* 設定greenDao
*/
private void setDatabase() {
// 通過 DaoMaster 的內部類 DevOpenHelper,你可以得到一個便利的 SQLiteOpenHelper 物件。
// 可能你已經注意到了,你並不需要去編寫「CREATE TABLE」這樣的 SQL 語句,因為 greenDAO 已經幫你做了。
// 注意:預設的 DaoMaster.DevOpenHelper 會在資料庫升級時,刪除所有的表,意味著這將導致資料的丟失。
// 所以,在正式的專案中,你還應該做一層封裝,來實現資料庫的安全升級。
mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);
db = mHelper.getWritableDatabase();
// 注意:該資料庫連線屬於 DaoMaster,所以多個 Session 指的是相同的資料庫連線。
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() {
return mDaoSession;
}
public SQLiteDatabase getDb() {
return db;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
獲取UserDao物件:
mUserDao = MyApplication.getInstances().getDaoSession().getUserDao();
- 1
六、簡單的增刪改查實現:
1.增
mUser = new User((long)2,"anye3");
mUserDao.insert(mUser);//新增一個
- 1
- 2
2.刪
mUserDao.deleteByKey(id);
- 1
3.改
mUser = new User((long)2,"anye0803");
mUserDao.update(mUser);
- 1
- 2
4.查
List<User> users = mUserDao.loadAll();
String userName = "";
for (int i = 0; i < users.size(); i++) {
userName += users.get(i).getName()+",";
}
mContext.setText("查詢全部資料==>"+userName);
- 1
- 2
- 3
- 4
- 5
- 6
更多的操作就不一一介紹了,大家可以根據需要去查詢資料;
七、greendao中的註解
(一) @Entity 定義實體
@nameInDb 在資料庫中的名字,如不寫則為實體中類名
@indexes 索引
@createInDb 是否建立表,預設為true,false時不建立
@schema 指定架構名稱為實體
@active 無論是更新生成都重新整理
(二) @Id
(三) @NotNull 不為null
(四) @Unique 唯一約束
(五) @ToMany 一對多
(六) @OrderBy 排序
(七) @ToOne 一對一
(八) @Transient 不儲存在資料庫中
(九) @generated 由greendao產生的建構函式或方法
八、資料庫升級
資料庫的升級其實就兩個步驟我們來看看:
8.1 修改gradle檔案
首先在module的gradle檔案中修改版本號:
//這裡改為最新的版本號
schemaVersion 2
targetGenDir 'src/main/java'
- 1
- 2
- 3
8.2修改實體類
@Entity
public class User {
@Property
private int age;
@Property
private String password;
@Id
private Long id;
@Property(nameInDb = "USERNAME")
private String username;
@Property(nameInDb = "NICKNAME")
private String nickname;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
重現編譯專案執行即可。
一般的資料庫升級這樣就可以了,特殊情況可能需要自己編寫資料庫遷移指令碼,這種時候可以自定義DBHelper,定義方式如下,注意繼承類:
public class 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);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
可以在onUpgrade方法中進行資料庫的遷移,如果自定義了DBHelper,則資料庫的初始化變為如下方式:
DBHelper devOpenHelper = new DBHelper(this);
DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDb());
DaoSession daoSession = daoMaster.newSession();
userDao = daoSession.getUserDao();
- 1
- 2
- 3
- 4
最後,
總體來說,GreenDao3.0在配置上相對於2.0要簡單的多。
正在搭建一個Android的 Demo ,有本文的程式碼,下載連結:Github地址,,如果喜歡的話可以star一下。
相關推薦
Android GreenDao基本使用
一、關於GreenDao greenDao應該算是當前最火的資料庫開源框架了,它是一個將物件對映到SQLite資料庫中的輕量且快速的ORM(object / relational mapping)解決方案。 關於greenDAO的其他相關資訊可以看官網greenDAO
Android GreenDao的基本使用
前言 Android 本地資料庫有很多,Sqlite、Dbutils、LitePa、GreenDao等,其他的幾個資料庫框架都用過了,GreenDao還未在專案中用過,所以在這裡記錄下GreenDao的基本使用。 一、新增GreenDao支援 1.1 在
Android greendao 的基本使用
1.新增依賴 在bulid.gradle檔案下的dependencies下新增所需依賴 compile 'org.greenrobot:greendao:3.2.2' // add library compile 'org.greenrobot:greendao-gen
Android Studio中 GreenDao 基本配置
一、需要在工程的build.gradle中新增依賴 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gr
Android開發基本環境搭建
image studio 基本 配置環境 http 學習 配置 ide 進步 安卓開發學習筆記,共同學習,共同進步。 Android軟件開發首先要安裝JDK,本文以windows10 64操作系統為例演示安裝步驟。 1.下載JDK 2.安裝 3.配置環境變量
Android ContentProvider基本用法
truct 數據共享 implement notify username 資源 per mime類型 exc 轉自:https://www.jianshu.com/p/601086916c8f 一、基本概念 ContentProvider是Android系統中提
Android GreenDao 深查詢 n:m 的關系
適合 oid == sta link png getc 可能 圖片 在我的應用程序這樣設計的關系:和我想選擇至少一個用戶作為一個朋友的所有聊天。 基本上,我想要執行以下查詢:\ SELECT c.* FROM CHAT c, USER u, UserChats uc
Android GreenDao 在組件化項目中的一個問題 - 2018年7月5日21:15:14
src 組件化 一個 gradle 項目 如果 7月 height greendao 組件化項目使用GreenDao時註意的事項: 1.要在組件化中的基礎庫(domain層)創建實體類; 2.如果sycn之後不能生產Dao文件,先把 module 的buil
Android GreenDao清空數據庫的方法
.sql mas 防止 @override oncreate androi turn tab tee 最近在做項目的時候,為了方便測試人員測試,在應用中加入正式庫和測試庫切換的功能。為了防止正式庫和測試庫切換帶來的數據沖突,切換的時候必須把當前的數據庫清空。代碼如下:
android greenDao使用
org roi github apply adl clas gre 依賴 -c github:https://github.com/greenrobot/greenDAO 先在依賴加上 compile ‘org.greenrobot:greendao-generator:3
Android GreenDao使用教程
extends image mda 自動 所有 andro 沒有 lac cat 1、在build.gradle裏添加相關依賴 apply plugin: ‘org.greenrobot.greendao‘ buildscript { repositori
Android開發 - 基本UI設計
文章目錄 Android開發 - 基本UI設計 1. 頁面部分佔用1/N的情況 2. 分割線的實現 Android開發 - 基本UI設計 本部落格記錄本人在安卓開發時候遇到的一些UI設計的問題以及解決方法
Android GreenDao簡單使用
一些簡單的配置都在上篇部落格中 定義工具類 package soexample.umeng.com.day03greendao; import android.content.Context; import android.database.sqlite.SQLiteDatabase; imp
Android GreenDao資料庫 配置(箭頭所指 你的方向)
mavenCentral() // add repository classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin //依賴 implementation 'org.greenrobot:gree
[Android]Android四大基本元件介紹與生命週期
http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html Android四大基本元件介紹與生命週期 Android四大基本元件分別是Activity,S
Android入門——基本控制元件詳解
Android應用開發的一項重要內容就是介面開發。對於使用者來說,不管APP包含的邏輯多麼複雜,功能多麼強大,如果沒有提供友好的圖形互動介面,將很難吸引終端使用者。作為一個程式設計師如何才能開發出友好的圖形介面呢。實際上Android提供了非常豐富UI(User Interface)控制元
Android studio基本知識
1 一般開啟專案後只關心app這個目錄。 1 build目錄:構建目錄,相當於Eclipse中的bin目錄 2 libs:依賴的包 3 src:
ubantu下的android環境基本配置(全面)
1.jdk的安裝以及配置 1)從這http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html這個網址下載jdk的安裝包,包名為jdk-8u171-lin
Android的基本元件和View和ViewGroup介紹
Android的基本元件 1.1 Activity 1.1.1 Activity代表手機的一個螢幕 1.1.2 一個Android程式由多個Activity組成,即:一個Android程式由多屏內容組成 1.1.3 Activity相當於一個展板,本身
Android的基本元件和自定義檢視
Android的基本元件 1 Activity 1.1 Activity代表手機的一個螢幕 1.2 一個Android程式由多個Activity組成,即:一個Android程式由多屏內容組成 1.3 Activity相當於一個展板