關(guān)于GreenDao
greenDao是一個(gè)將對(duì)象映射到SQLite數(shù)據(jù)庫(kù)中的輕量且快速的ORM解決方案。
關(guān)于greenDAO的概念可以看官網(wǎng)greenDAO
greenDAO 優(yōu)勢(shì)
1、一個(gè)精簡(jiǎn)的庫(kù)
2、性能最大化
3恼除、內(nèi)存開銷最小化
4白热、易于使用的 APIs
5阳似、對(duì) Android 進(jìn)行高度優(yōu)化
GreenDao 3.0使用
GreenDao 3.0采用注解的方式來定義實(shí)體類权她,通過gradle插件生成相應(yīng)的代碼。
一刀森,在as中導(dǎo)入相關(guān)的包
compile'org.greenrobot:greendao:3.0.1'
compile'org.greenrobot:greendao-generator:3.0.0'
二踱启,在build.gradle中進(jìn)行配置:
apply plugin: 'org.greenrobot.greendao'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
}
}
在gradle的根模塊中加入上述代碼。
三,自定義路徑
greendao {
schemaVersion 1
daoPackage 'com.anye.greendao.gen'
targetGenDir 'src/main/java'
}
在gradle的根模塊中加入上述代碼埠偿,就完成了我們的基本配置了透罢。
屬性介紹:
schemaVersion--> 指定數(shù)據(jù)庫(kù)schema版本號(hào),遷移等操作會(huì)用到;
daoPackage? ? --> dao的包名冠蒋,包名默認(rèn)是entity所在的包羽圃;
targetGenDir? --> 生成數(shù)據(jù)庫(kù)文件的目錄;
四,創(chuàng)建一個(gè)User的實(shí)體類
@Entity
public class User {
@Id
private Long id;
private String name;
@Transient
private int tempUsageCount; // not persisted
}
五抖剿,MakeProject
編譯項(xiàng)目统屈,User實(shí)體類會(huì)自動(dòng)編譯,生成get牙躺、set方法并且會(huì)在com.anye.greendao.gen目錄下生成三個(gè)文件;
greenDao
GreenDao使用
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;
}
/**
* 設(shè)置greenDao
*/
private void setDatabase() {
// 通過 DaoMaster 的內(nèi)部類 DevOpenHelper腕扶,你可以得到一個(gè)便利的 SQLiteOpenHelper 對(duì)象孽拷。
// 可能你已經(jīng)注意到了,你并不需要去編寫「CREATE TABLE」這樣的 SQL 語句半抱,因?yàn)?greenDAO 已經(jīng)幫你做了脓恕。
// 注意:默認(rèn)的 DaoMaster.DevOpenHelper 會(huì)在數(shù)據(jù)庫(kù)升級(jí)時(shí),刪除所有的表窿侈,意味著這將導(dǎo)致數(shù)據(jù)的丟失炼幔。
// 所以,在正式的項(xiàng)目中史简,你還應(yīng)該做一層封裝乃秀,來實(shí)現(xiàn)數(shù)據(jù)庫(kù)的安全升級(jí)。
mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);
db = mHelper.getWritableDatabase();
// 注意:該數(shù)據(jù)庫(kù)連接屬于 DaoMaster圆兵,所以多個(gè) Session 指的是相同的數(shù)據(jù)庫(kù)連接跺讯。
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() {
return mDaoSession;
}
public SQLiteDatabase getDb() {
return db;
}
}
獲取UserDao對(duì)象:
mUserDao = MyApplication.getInstances().getDaoSession().getUserDao();
簡(jiǎn)單的增刪改查實(shí)現(xiàn):
1. 增
mUser = new User((long)2,"anye3");
mUserDao.insert(mUser);//添加一個(gè)
2. 刪
mUserDao.deleteByKey(id);
3. 改
mUser = new User((long)2,"anye0803");
mUserDao.update(mUser);
4. 查
List users = mUserDao.loadAll();
String userName = "";
for (int i = 0; i < users.size(); i++) {
userName += users.get(i).getName()+",";
}
mContext.setText("查詢?nèi)繑?shù)據(jù)==>"+userName);
更多的操作就不一一介紹了,大家可以根據(jù)需要去查找資料殉农;
greendao中的注解
(一) @Entity 定義實(shí)體
@nameInDb 在數(shù)據(jù)庫(kù)中的名字刀脏,如不寫則為實(shí)體中類名
@indexes 索引
@createInDb 是否創(chuàng)建表,默認(rèn)為true,false時(shí)不創(chuàng)建
@schema 指定架構(gòu)名稱為實(shí)體
@active 無論是更新生成都刷新
(二) @Id
(三) @NotNull 不為null
(四) @Unique 唯一約束
(五) @ToMany 一對(duì)多
(六) @OrderBy 排序
(七) @ToOne 一對(duì)一
(八) @Transient 不存儲(chǔ)在數(shù)據(jù)庫(kù)中
(九) @generated 由greendao產(chǎn)生的構(gòu)造函數(shù)或方法
結(jié)束語
總體來說,GreenDao3.0在配置上相對(duì)于2.0要簡(jiǎn)單的多超凳。
本文 Demo 下載鏈接:https://github.com/anye0803/GreenDao/愈污,,如果喜歡的話可以star一下。
本教程旨在介紹 greenDAO3.0的基本用法與配置轮傍,更高級(jí)與詳細(xì)的使用暂雹,請(qǐng)參見官網(wǎng)如本文有任何問題歡迎指正。