您好,登錄后才能下訂單哦!
今日觀看別人源碼的時(shí)候偶然間發(fā)現(xiàn)了一個(gè)很好用的數(shù)據(jù)庫(kù)神器,在這里分享一下。
什么是dbflow?
dbflow是Android SQLite ORM的一個(gè)使用注解操控的工具庫(kù)。簡(jiǎn)單說(shuō)就是對(duì)sqlite數(shù)據(jù)庫(kù)進(jìn)行操作的一個(gè)java庫(kù)。
ORM(Object-relational mapping),中文翻譯為對(duì)象關(guān)系映射,是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫(kù)存在的互不匹配的現(xiàn)象的技術(shù)。簡(jiǎn)單的說(shuō),ORM是通過(guò)使用描述對(duì)象和數(shù)據(jù)庫(kù)之間映射的元數(shù)據(jù),將程序中的對(duì)象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫(kù)中。
為什么使用dbflow?
1、 速度
基于AnnotationProcessing(注解處理器),在編譯時(shí)生成代碼,運(yùn)行時(shí)性能優(yōu)良,通過(guò)復(fù)用對(duì)象以及緩存機(jī)制,得到不錯(cuò)的速度體驗(yàn)。
2、 擴(kuò)展性
數(shù)據(jù)表單映射到數(shù)據(jù)對(duì)象,通過(guò)該對(duì)象繼承Model類,一般的話繼承BaseModel類就可以,對(duì)類內(nèi)成員添加注解生成所需要的表單。
3、 查詢語(yǔ)句
如果你使用過(guò)greenDao等其他的庫(kù)的話,查詢語(yǔ)句都非常接近SQL語(yǔ)句。
4、 基于sqlite
不限制平臺(tái),有sqlite的地方就可以使用dbflow。
5、 開源
源碼是個(gè)好東西,有能力的人可以看看。https://github.com/Raizlabs/DBFlow
怎么使用dbflow
配置環(huán)境
不管是想學(xué)習(xí)什么東西,環(huán)境就是個(gè)主要東西,那對(duì)于一個(gè)三方庫(kù)來(lái)說(shuō)第一步就是導(dǎo)入類庫(kù)。
首先在主要的build.gradle中添加maven地址:
allprojects { repositories { maven { url "https://jitpack.io" } } }
其次在基類module中添加依賴:
如果需要添加kotlin的代碼的話查看上文的源碼地址下方有說(shuō)明。
使用
在Application中添加init
FlowManager.*init*(this);
創(chuàng)建數(shù)據(jù)庫(kù)
@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ù)庫(kù)名稱 version數(shù)據(jù)庫(kù)版本
創(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ù)庫(kù)對(duì)象,表單屬性使用各類注解,PrimaryKey主鍵,Colum列。
注意:這里我們繼承的 BaseModel 是 DBFlow 給我們提供的,是可以不繼承的,差別僅僅增刪改查的操作上有所不同。
創(chuàng)建完后,點(diǎn)擊Build->make,會(huì)在..\build\generated\source\apt\debug下生成必要代碼。
插入:
創(chuàng)建一個(gè)表單對(duì)象,賦值完,調(diào)用save方法即可插入操作。
刪除:
類似于sql語(yǔ)句的代碼進(jìn)行操作
SQLite.*delete*() .from(DbFlowModel.class) .where(DbFlowModel_Table.*id*.eq(id), DbFlowModel_Table.*name*.eq(name)) .execute();
查詢:
這個(gè)有很多復(fù)雜的查詢操作,想知道詳細(xì)的還是看官方文檔。
更新:
都是類似的。
SQLite.*update*(DbFlowModel.class) .set(DbFlowModel_Table.*name*.eq("PXXXX")) .where(DbFlowModel_Table.*name*.eq("P0000")) .execute();
注意:新建表單后,需要對(duì)數(shù)據(jù)庫(kù)的version進(jìn)行升級(jí),不然會(huì)報(bào)錯(cuò)的。
這里主要簡(jiǎn)單的介紹一下dbflow的基本使用,主要用作分享和記錄一些好用的東西,
源碼:https://github.com/xiaogoudandan/WilliamApp
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。