GreenDao3.0使用

史上最高效的ORM方案——GreenDao3.0詳解

GreenDao3.0簡單使用

關(guān)于GreenDao

greenDao是一個將對象映射到SQLite數(shù)據(jù)庫中的輕量且快速的ORM解決方案曾雕。

關(guān)于greenDAO的概念可以看官網(wǎng)greenDAO

greenDAO 優(yōu)勢

1衅澈、一個精簡的庫

2靖苇、性能最大化

3响蓉、內(nèi)存開銷最小化

4、易于使用的 APIs

5、對 Android 進行高度優(yōu)化

GreenDao 3.0使用

GreenDao 3.0采用注解的方式來定義實體類,通過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中進行配置:(該處配置屬于工程build眨唬,不能再moudle進行配置)

buildscript {

repositories {

mavenCentral()

}

dependencies {

classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'

}

}

三、自定義路徑(moudle配置)

apply plugin: 'org.greenrobot.greendao'


android {

greendao {

schemaVersion 1

daoPackage 'com.example.msi.greeandao'

targetGenDir 'src/main/java'

}

基本注釋屬性

@ID?? 一般會選擇long/Long屬性作為Entity ID(即數(shù)據(jù)庫中的主鍵)autoincrement=true表示主鍵會自增如果false就會使用舊值

@Property?? 可以自定義一個該屬性在數(shù)據(jù)庫中的名稱好乐,默認情況下數(shù)據(jù)庫中該屬性名稱是Bean對象中的 屬性名但是不是以駝峰式而是以大寫與下劃線組合形式來命名的比如:customName將命名為 CUSTOM_NAME;注意:外鍵不能使用該屬性匾竿;

@NotNull?? 確保屬性值不會為null值;

@Transient??? 使用該注釋的屬性不會被存入數(shù)據(jù)庫中;

主鍵限制每個實體類都應(yīng)該有一個long或者LONG型屬性作為主鍵;如果你不想用long或者LONG型作為主鍵蔚万,你可以使用一個唯一索引(使用@Index(unique = true)注釋使普通屬性改變成唯一索引屬性)屬性作為關(guān)鍵屬性岭妖。


greendao中的注解

(一) @Entity 定義實體

@nameInDb 在數(shù)據(jù)庫中的名字,如不寫則為實體中類名

@indexes 索引

@createInDb 是否創(chuàng)建表,默認為true,false時不創(chuàng)建

@schema 指定架構(gòu)名稱為實體

@active 無論是更新生成都刷新

(二) @Id

(三) @NotNull 不為null

(四) @Unique 唯一約束

(五) @ToMany 一對多

(六) @OrderBy 排序

(七) @ToOne 一對一

(八) @Transient 不存儲在數(shù)據(jù)庫中

(九) @generated 由greendao產(chǎn)生的構(gòu)造函數(shù)或方法


==========================================================================

附上Application配置:


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昵慌,你可以得到一個便利的 SQLiteOpenHelper 對象假夺。

// 可能你已經(jīng)注意到了,你并不需要去編寫「CREATE TABLE」這樣的 SQL 語句斋攀,因為 greenDAO 已經(jīng)幫你做了已卷。

// 注意:默認的 DaoMaster.DevOpenHelper 會在數(shù)據(jù)庫升級時,刪除所有的表蜻韭,意味著這將導(dǎo)致數(shù)據(jù)的丟失悼尾。

// 所以柿扣,在正式的項目中肖方,你還應(yīng)該做一層封裝,來實現(xiàn)數(shù)據(jù)庫的安全升級未状。

mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);

db = mHelper.getWritableDatabase();

// 注意:該數(shù)據(jù)庫連接屬于 DaoMaster俯画,所以多個 Session 指的是相同的數(shù)據(jù)庫連接。

mDaoMaster = new DaoMaster(db);

mDaoSession = mDaoMaster.newSession();

}

public DaoSession getDaoSession() {

return mDaoSession;

}

public SQLiteDatabase getDb() {

return db;

}

}


附上MainActivity代碼:

public class MainActivity extends AppCompatActivity {? ?

UserDao userDao;? ?

@Override? ?

protected void onCreate(Bundle savedInstanceState) {? ? ?

? super.onCreate(savedInstanceState);? ? ? ?

setContentView(R.layout.activity_main);? ? ?

? //獲取User表單? ? ?

? userDao = MyApplication.getInstances().getDaoSession().getUserDao();? ?

??? User user = new User(null, "YYF");? ? ? ?

userDao.insert(user);? ? ?

? Listusers = userDao.loadAll();

for (int i = 0; i < users.size(); i++) {

Toast.makeText(this, "" + users.get(i).getName(), Toast.LENGTH_SHORT).show();

}

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末司草,一起剝皮案震驚了整個濱河市艰垂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌埋虹,老刑警劉巖猜憎,帶你破解...
    沈念sama閱讀 212,294評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異搔课,居然都是意外死亡胰柑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評論 3 385
  • 文/潘曉璐 我一進店門爬泥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柬讨,“玉大人,你說我怎么就攤上這事袍啡〔裙伲” “怎么了?”我有些...
    開封第一講書人閱讀 157,790評論 0 348
  • 文/不壞的土叔 我叫張陵境输,是天一觀的道長蔗牡。 經(jīng)常有香客問我,道長嗅剖,這世上最難降的妖魔是什么辩越? 我笑而不...
    開封第一講書人閱讀 56,595評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮窗悯,結(jié)果婚禮上区匣,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好亏钩,可當(dāng)我...
    茶點故事閱讀 65,718評論 6 386
  • 文/花漫 我一把揭開白布莲绰。 她就那樣靜靜地躺著,像睡著了一般姑丑。 火紅的嫁衣襯著肌膚如雪蛤签。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,906評論 1 290
  • 那天栅哀,我揣著相機與錄音震肮,去河邊找鬼。 笑死留拾,一個胖子當(dāng)著我的面吹牛戳晌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播痴柔,決...
    沈念sama閱讀 39,053評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼沦偎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了咳蔚?” 一聲冷哼從身側(cè)響起豪嚎,我...
    開封第一講書人閱讀 37,797評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谈火,沒想到半個月后侈询,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,250評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡糯耍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,570評論 2 327
  • 正文 我和宋清朗相戀三年扔字,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谍肤。...
    茶點故事閱讀 38,711評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡啦租,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出荒揣,到底是詐尸還是另有隱情篷角,我是刑警寧澤,帶...
    沈念sama閱讀 34,388評論 4 332
  • 正文 年R本政府宣布系任,位于F島的核電站恳蹲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏俩滥。R本人自食惡果不足惜嘉蕾,卻給世界環(huán)境...
    茶點故事閱讀 40,018評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望霜旧。 院中可真熱鬧错忱,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掷倔,卻和暖如春眉孩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勒葱。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評論 1 266
  • 我被黑心中介騙來泰國打工浪汪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人凛虽。 一個月前我還...
    沈念sama閱讀 46,461評論 2 360
  • 正文 我出身青樓死遭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親涩维。 傳聞我的和親對象是個殘疾皇子殃姓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,595評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于GreenDao greenDao是一個將對象映射到SQLite數(shù)據(jù)庫中的輕量且快速的ORM解決方案。 關(guān)于g...
    天天大保建閱讀 341評論 0 0
  • 一瓦阐、關(guān)于greenDAO greenDAO應(yīng)該算是當(dāng)前最火的數(shù)據(jù)庫開源框架了,它是一個將對象映射到SQLite數(shù)據(jù)...
    當(dāng)幸福來敲門58閱讀 13,862評論 3 19
  • GreenDao 介紹:greenDAO是一個對象關(guān)系映射(ORM)的框架篷牌,能夠提供一個接口通過操作對象的方式去操...
    小董666閱讀 730評論 0 1
  • 介紹 據(jù)說是Android中最快的的Orm睡蟋。 官網(wǎng)地址 GreenDao github GreenDao 優(yōu)點 性...
    sanfen閱讀 366評論 0 0
  • 關(guān)于greendao greendao官網(wǎng)GitHubgreenDao是一個將對象映射到SQLite數(shù)據(jù)庫中的輕量...
    junl_yaun閱讀 716評論 0 0