Android資料庫神器
今日觀看別人源碼的時候偶然間發現了一個很好用的資料庫神器,在這裡分享一下。
1
什麼是Dbflow
dbflow是Android SQLite ORM的一個使用註解操控的工具庫。簡單說就是對sqlite資料庫進行操作的一個java庫。
ORM(Object-relational mapping),中文翻譯為對象關係映射,是一種為了解決面向對象與關係資料庫存在的互不匹配的現象的技術。簡單的說,ORM是通過使用描述對象和資料庫之間映射的元數據,將程序中的對象自動持久化到關係資料庫中。
2為什麼使用Dbflow
1、速度
基於AnnotationProcessing(註解處理器),在編譯時生成代碼,運行時性能優良,通過復用對象以及緩存機制,得到不錯的速度體驗。
2、擴展性
數據表單映射到數據對象,通過該對象繼承Model類,一般的話繼承BaseModel類就可以,對類內成員添加註解生成所需要的表單。
3、查詢語句
如果你使用過greenDao等其他的庫的話,查詢語句都非常接近SQL語句。
4、基於sqlite
不限制平台,有sqlite的地方就可以使用dbflow。
5、開源
源碼是個好東西,有能力的人可以看看。https://github.com/Raizlabs/DBFlow
3
怎麼使用Dbflow
配置環境
不管是想學習什麼東西,環境就是個主要東西,那對於一個三方庫來說第一步就是導入類庫。
首先在主要的build.gradle中添加maven地址:
allprojects {
repositories {
maven { url"https://jitpack.io"}
}
}
其次在基類module中添加依賴:
defdbflow_version ="4.2.4"
dependencies {
annotationProcessor"com.github.Raizlabs.DBFlow:dbflow-processor:$"
compile"com.github.Raizlabs.DBFlow:dbflow-core:$"
compile"com.github.Raizlabs.DBFlow:dbflow:$"
compile"com.github.Raizlabs.DBFlow:dbflow-rx2:$"
compile"com.github.Raizlabs.DBFlow:dbflow-sqlcipher:$"
}
如果需要添加kotlin的代碼的話查看上文的源碼地址下方有說明。
使用
在Application中添加init
FlowManager.init(this);
創建資料庫
@Database(name= DbFlowData.DBNAME,version= DbFlowData.VERSION)
public classDbFlowData {
public static finalStringDBNAME="DbFlowData";
public static final intVERSION=1;
}
使用註解Database,name資料庫名稱version資料庫版本
創建表單
@Table(database= DbFlowData.class)
public classDbFlowModelextendsBaseModel {
@PrimaryKey(autoincrement=true)
public intid;
@Column
publicStringname;
public intgetId() {
returnid;
}
public voidsetId(intid) {
this.id= id;
}
publicStringgetName() {
returnname;
}
public voidsetName(String name) {
this.name= name;
}
}
使用註解Table database從屬資料庫對象,表單屬性使用各類註解,PrimaryKey主鍵,Colum列。
注意:這裡我們繼承的BaseModel是DBFlow給我們提供的,是可以不繼承的,差別僅僅增刪改查的操作上有所不同。
創建完後,點擊Build->make,會在..uildgeneratedsourceaptdebug下生成必要代碼。
插入:
創建一個表單對象,賦值完,調用save方法即可插入操作。
DbFlowModel dbFlowModel =newDbFlowModel();
dbFlowModel.name= name;
dbFlowModel.save();
刪除:
類似於sql語句的代碼進行操作
查詢:
這個有很多複雜的查詢操作,想知道詳細的還是看官方文檔。
List list = SQLite.select().from(DbFlowModel.class).queryList();
更新:
都是類似的。
注意:新建表單後,需要對資料庫的version進行升級,不然會報錯的。
這裡主要簡單的介紹一下dbflow的基本使用,主要用作分享和記錄一些好用的東西。
感謝閱讀。
TAG:WilliamIT |