Android數(shù)據(jù)庫神器(bdflow)

開頭圖片.png

今日觀看別人源碼的時(shí)候偶然間發(fā)現(xiàn)了一個(gè)很好用的數(shù)據(jù)庫神器,在這里分享一下伸刃。


什么是dbflow?

dbflow是Android SQLite ORM的一個(gè)使用注解操控的工具庫逢倍。簡單說就是對(duì)sqlite數(shù)據(jù)庫進(jìn)行操作的一個(gè)java庫捧颅。

ORM(Object-relational mapping),中文翻譯為對(duì)象關(guān)系映射较雕,是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術(shù)碉哑。簡單的說,ORM是通過使用描述對(duì)象和數(shù)據(jù)庫之間映射的元數(shù)據(jù)亮蒋,將程序中的對(duì)象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫中扣典。

為什么使用dbflow?

1慎玖、 速度

基于AnnotationProcessing(注解處理器)贮尖,在編譯時(shí)生成代碼,運(yùn)行時(shí)性能優(yōu)良趁怔,通過復(fù)用對(duì)象以及緩存機(jī)制湿硝,得到不錯(cuò)的速度體驗(yàn)。

2润努、 擴(kuò)展性

數(shù)據(jù)表單映射到數(shù)據(jù)對(duì)象关斜,通過該對(duì)象繼承Model類,一般的話繼承BaseModel類就可以任连,對(duì)類內(nèi)成員添加注解生成所需要的表單蚤吹。

3例诀、 查詢語句

如果你使用過greenDao等其他的庫的話随抠,查詢語句都非常接近SQL語句裁着。

4、 基于sqlite

不限制平臺(tái)拱她,有sqlite的地方就可以使用dbflow二驰。

5、 開源

源碼是個(gè)好東西秉沼,有能力的人可以看看桶雀。
https://github.com/Raizlabs/DBFlow

怎么使用dbflow

配置環(huán)境

不管是想學(xué)習(xí)什么東西,環(huán)境就是個(gè)主要東西唬复,那對(duì)于一個(gè)三方庫來說第一步就是導(dǎo)入類庫矗积。

首先在主要的build.gradle中添加maven地址:

allprojects {
 repositories {
         maven { url "https://jitpack.io" }  }
}

其次在基類module中添加依賴:

<pre style="background:#2B2B2B">def dbflow_version = "4.2.4" dependencies {     annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow-rx2:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow-sqlcipher:${dbflow_version}" }</pre>

如果需要添加kotlin的代碼的話查看上文的源碼地址下方有說明。

使用

在Application中添加init

FlowManager.*init*(this);

創(chuàng)建數(shù)據(jù)庫

@Database(name = DbFlowData.*DBNAME*,version = DbFlowData.*VERSION*) 
public class DbFlowData {
 public static final String *DBNAME*="DbFlowData";
 public static final int *VERSION*=1; 
}

使用注解Database敞咧,name數(shù)據(jù)庫名稱 version數(shù)據(jù)庫版本

創(chuàng)建表單

@Table(database = DbFlowData.class)
 public class DbFlowModel extends BaseModel { 
@PrimaryKey(autoincrement = true) public int id; 
@Column public String name;

 public int getId() { return id; } 
public void setId(int id) { this.id = id; } 
public String getName() { return name; } 
public void setName(String name) { this.name = name; }

}

使用注解Table database從屬數(shù)據(jù)庫對(duì)象棘捣,表單屬性使用各類注解,PrimaryKey主鍵休建,Colum列乍恐。
注意:這里我們繼承的 BaseModel 是 DBFlow 給我們提供的,是可以不繼承的测砂,差別僅僅增刪改查的操作上有所不同茵烈。
創(chuàng)建完后,點(diǎn)擊Build->make,會(huì)在..\build\generated\source\apt\debug下生成必要代碼砌些。

插入:
創(chuàng)建一個(gè)表單對(duì)象呜投,賦值完,調(diào)用save方法即可插入操作存璃。

DbFlowModel dbFlowModel = new DbFlowModel(); dbFlowModel.name = name; dbFlowModel.save();

刪除:
類似于sql語句的代碼進(jìn)行操作

SQLite.*delete*()
 .from(DbFlowModel.class)
 .where(DbFlowModel_Table.*id*.eq(id), DbFlowModel_Table.*name*.eq(name))
 .execute();

查詢:
這個(gè)有很多復(fù)雜的查詢操作宙彪,想知道詳細(xì)的還是看官方文檔。

List<DbFlowModel> list = SQLite.*select*().from(DbFlowModel.class).queryList();

更新:
都是類似的有巧。

SQLite.*update*(DbFlowModel.class)
 .set(DbFlowModel_Table.*name*.eq("PXXXX"))
 .where(DbFlowModel_Table.*name*.eq("P0000"))
 .execute();

注意:新建表單后释漆,需要對(duì)數(shù)據(jù)庫的version進(jìn)行升級(jí),不然會(huì)報(bào)錯(cuò)的篮迎。
這里主要簡單的介紹一下dbflow的基本使用男图,主要用作分享和記錄一些好用的東西,
感謝閱讀甜橱。
源碼:https://github.com/xiaogoudandan/WilliamApp


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逊笆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子岂傲,更是在濱河造成了極大的恐慌难裆,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異乃戈,居然都是意外死亡褂痰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門症虑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缩歪,“玉大人,你說我怎么就攤上這事谍憔》蓑” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵习贫,是天一觀的道長逛球。 經(jīng)常有香客問我,道長苫昌,這世上最難降的妖魔是什么需忿? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蜡歹,結(jié)果婚禮上屋厘,老公的妹妹穿的比我還像新娘。我一直安慰自己月而,他們只是感情好汗洒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著父款,像睡著了一般溢谤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上憨攒,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天世杀,我揣著相機(jī)與錄音,去河邊找鬼肝集。 笑死瞻坝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的杏瞻。 我是一名探鬼主播所刀,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼捞挥!你這毒婦竟也來了浮创?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤砌函,失蹤者是張志新(化名)和其女友劉穎斩披,沒想到半個(gè)月后溜族,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡垦沉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年煌抒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乡话。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡摧玫,死狀恐怖耳奕,靈堂內(nèi)的尸體忽然破棺而出绑青,到底是詐尸還是另有隱情,我是刑警寧澤屋群,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布闸婴,位于F島的核電站,受9級(jí)特大地震影響芍躏,放射性物質(zhì)發(fā)生泄漏邪乍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一对竣、第九天 我趴在偏房一處隱蔽的房頂上張望庇楞。 院中可真熱鬧,春花似錦否纬、人聲如沸吕晌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽睛驳。三九已至,卻和暖如春膜廊,著一層夾襖步出監(jiān)牢的瞬間乏沸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國打工爪瓜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蹬跃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓铆铆,卻偏偏與公主長得像炬转,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子算灸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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