日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

android dbflow教程,Android高性能ORM数据库DBFlow入门教程

發布時間:2024/9/18 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android dbflow教程,Android高性能ORM数据库DBFlow入门教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、引入依賴、初始化

需要引入apt和maven,配置項目的 build.gradle

buildscript {

repositories {

jcenter()

}

dependencies {

classpath 'com.android.tools.build:gradle:2.0.0-beta6'

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

}

}

allprojects {

repositories {

jcenter()

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

}

}

配置app的build.gradle

apply plugin: 'com.android.application'

apply plugin: 'com.neenbedankt.android-apt'

def dbflow_version = "3.0.0-beta4"

android {

compileSdkVersion 23

buildToolsVersion "23.0.2"

defaultConfig {

applicationId "cn.taoweiji.dbflowexample"

minSdkVersion 14

targetSdkVersion 23

versionCode 1

versionName "1.0"

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

}

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

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

}

需要在Application的onCreate對DBFlow進行初始化

public class MyApplication extends Application {

@Override

public void onCreate() {

super.onCreate();

FlowManager.init(this);

}

}

二、數據庫創建、表創建

1、定義數據庫

我這里定義了一個名稱叫做AppDatabase的數據庫,可以根據自己的喜歡進行定義。

@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)

public class AppDatabase {

//數據庫名稱

public static final String NAME = "AppDatabase";

//數據庫版本號

public static final int VERSION = 1;

}

2、創建數據庫對象

必須繼承BaseModel,BaseModel包含了基本的數據庫操作(save、delete、update、insert、exists),看下面代碼可以發現這個表是關聯上面定義的數據庫,People的id是自增的id。

@ModelContainer

@Table(database = AppDatabase.class)

public class People extends BaseModel {

//自增ID

@PrimaryKey(autoincrement = true)

public Long id;

@Column

public String name;

@Column

public int gender;

}

編寫完數據表對象后,點擊Android studio的build->Make Project(Mac的童鞋直接command+F9)就會使用apt進行了編譯,

查看目錄(我的people類放在cn.taoweiji.dbflowexample.db)

app/build/generated/source/apt/debug/cn/taoweiji/dbflowexample/db

就可以看到自動生成 People_Adapter、People_Container、People_Table,其中People_Table在后面使用有很大的作用,建議詳細看看它的結構。

三、增刪改

由于數據表對象繼承了BaseModel,已經包含了很多的操作

People people = new People();

people.name = "Wiki";

people.gender = 1;

people.save();

//people.update();

//people.delete();

Log.e("Test", String.valueOf(people.id));

刪除、更新等操作就自己體驗,這里就不多說了。

四、查詢

//返回所有查詢結果

Listpeoples = new Select().from(People.class).queryList();

//返回單個查詢結果

People people = new Select().from(People.class).querySingle();

//查詢gender = 1的所有People

Listpeoples2 = new Select().from(People.class).where(People_Table.gender.eq(1)).queryList();

DBFlow的查詢方式借鑒ActiveAndroid的,但是比ActiveAndroid功能還要強大。

五、事務、批量保存

事務是一個數據必須具備的,如果保存10000條數據,一條一條保存必然是很慢的,所以就需要用到事務,批量保存。DBFlow的事務非常的強大,同時使用也很復雜,這里就簡單介紹批量保存,更多內容請查看官方文檔

Listpeoples = new ArrayList<>();

for (int i = 0; i < 1000; i++) {

People people = new People();

people.name = "Wiki";

people.gender = 1;

peoples.add(people);

}

//實時保存,馬上保存

new SaveModelTransaction<>(ProcessModelInfo.withModels(peoples)).onExecute();

//異步保存,使用異步,如果立刻查詢可能無法查到結果

//TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(ProcessModelInfo.withModels(peoples)));

六、數據庫升級(增加表、增加字段等)

如果是新增表無需做特別的處理,直接修改AppDatabase的版本號即可。

如果需要新增字段,除了需要修改AppDatabase的版本號外,還需要做特殊的處理,DBFlow的描述是:Migrations。

例子:對People新增一個email字段

第1步,修改數據庫版本號

@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)

public class AppDatabase {

//數據庫名稱

public static final String NAME = "AppDatabase";

//數據庫版本號,這里修改2

public static final int VERSION = 2;

}

第2步,需要修改數據表對象結構,增加email

@ModelContainer

@Table(database = AppDatabase.class)

public class People extends BaseModel {

//自增ID

@PrimaryKey(autoincrement = true)

public Long id;

@Column

public String name;

@Column

public int gender;

@Column

public String email;

}

第3步,執行第二步之后,需要build(Android studio的build->Make Project、Mac的童鞋直接command+F9),通過apt更新People_Table,接下來編寫Migrations

@Migration(version = 2, database = AppDatabase.class)

public class Migration_2_People extends AlterTableMigration{

public Migration_2_People(Classtable) {

super(table);

}

@Override

public void onPreMigrate() {

addColumn(SQLiteType.TEXT, People_Table.email.getNameAlias().getName());

}

}

類名可以更加自己喜歡定義,我個人的規則是,按照數據庫版本號和需要更新的數據表來命名,需要注意是:version = 2

數據庫升級就大功告成了。

總結

這篇文章只是簡單介紹了DBFlow的基本功能使用,DBFlow還有很多很厲害的功能,比如多數據庫支持、Powerful Model Caching等,而且還支持Kotlin語言(運行在Java虛擬機的新語言)。我只使用過greenDAO、activeAndroid、afinal、DBFlow數據庫,所以在我看來,DBFlow是我用過的數據庫當中最好用的數據庫,性能也很好,使用非常簡單,高度推薦。

總結

以上是生活随笔為你收集整理的android dbflow教程,Android高性能ORM数据库DBFlow入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。