溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android bdflow數(shù)據(jù)庫(kù)神器的使用

發(fā)布時(shí)間:2020-10-16 17:46:40 來(lái)源:腳本之家 閱讀:252 作者:WilliamIT 欄目:編程語(yǔ)言

今日觀看別人源碼的時(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中添加依賴:

復(fù)制代碼 代碼如下:

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}" }

如果需要添加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方法即可插入操作。

復(fù)制代碼 代碼如下:
DbFlowModel dbFlowModel = new DbFlowModel(); dbFlowModel.name = name; dbFlowModel.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ì)的還是看官方文檔。

復(fù)制代碼 代碼如下:
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ù)庫(kù)的version進(jìn)行升級(jí),不然會(huì)報(bào)錯(cuò)的。

這里主要簡(jiǎn)單的介紹一下dbflow的基本使用,主要用作分享和記錄一些好用的東西,

源碼:https://github.com/xiaogoudandan/WilliamApp

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI