当前位置:天才代写 > tutorial > 安卓教程 > Android高性能ORM数据库DBFlow入门

Android高性能ORM数据库DBFlow入门

2021-02-26 14:12 星期五 所属: 安卓教程 浏览:890

DBFlow,综合性了 ActiveAndroid, Schematic, Ollie,Sprinkles 等库的优势。另外并不是根据反射面,因此 特性也是十分高,高效率紧随greenDAO之后。根据注释,应用apt技术性,在编译程序全过程中转化成实际操作类,应用方法和ActiveAndroid高宽比类似,应用简易。

特点:
1、无缝拼接适用好几个数据库查询;
2、应用annotation processing提高速度;
3、ModelContainer类库能够立即分析像JSON那样的数据信息;
4、提升协调能力的丰富多彩插口。
 
github库房:https://github.com/Raizlabs/DBFlow
 

DBFlow在中国很有可能用的人并不是许多,因此 汉语详细介绍非常少,因此 就拥有本文,下面就让我们一起学习培训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);
    }
}

还记得改动AndroidManifest.xml

<application
    android:name=".MyApplication"
../>

二、数据库查询建立、表建立

界定数据库查询

我这里界定了一个名字称为AppDatabase的数据库查询,能够依据自身的喜爱开展界定。

@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)
public class AppDatabase {
  //数据库查询名字
  public static final String NAME = "AppDatabase";
  //数据库查询版本信息
  public static final int VERSION = 1;
}

建立数据库目标

务必承继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));

删掉、升级等实际操作就自身感受,这儿就很少讲了。

四、查看

//回到全部查看結果
List<People> peoples = new Select().from(People.class).queryList();
//回到单独查看結果
People people = new Select().from(People.class).querySingle();
//查看gender = 1的全部People
List<People> peoples2 = new Select().from(People.class).where(People_Table.gender.eq(1)).queryList();

DBFlow的查看方法效仿ActiveAndroid的,可是比ActiveAndroid作用也要强劲。

四、事务管理、大批量储存

事务管理是一个数据信息务必具有的,假如储存10000条数据信息,一条一条储存必定是比较慢的,因此 就必须采用事务管理,大批量储存。DBFlow的事务管理十分的强劲,另外应用也很繁杂,这儿就简易详细介绍大批量储存,大量內容请查询官方网文本文档

https://github.com/Raizlabs/DBFlow/blob/master/usage/Transactions.md

List<People> peoples = 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字段名

第一步,改动数据库查询版本信息

@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)
public class AppDatabase {
  //数据库查询名字
  public static final String NAME = "AppDatabase";
  //数据库查询版本信息,这儿改动2
  public static final int VERSION = 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;
}

第三步,实行第二步以后,必须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<People> {

    public Migration_2_People(Class<People> table) {
        super(table);
    }

    @Override
    public void onPreMigrate() {
        addColumn(SQLiteType.TEXT, People_Table.email.getNameAlias().getName());
    }
}

类名能够更为自身喜爱界定,我本人的标准是,依照数据库查询版本信息和必须升级的数据分析表来取名,必须留意是:version = 2

数据库查询升級就做好了了。

小结:本文仅仅简易详细介绍了DBFlow的基本要素应用,DBFlow也有许多很厉害的作用,例如多数据库查询适用、Powerful Model Caching等,并且还适用Kotlin语言表达(运作在Javavm虚拟机的新语言表达)。我只应用过greenDAO、activeAndroid、afinal、DBFlow数据库查询,因此 我认为,DBFlow就是我使用过的数据库查询之中最好用的数据库查询,特性也很好,应用比较简单,高宽比强烈推荐。

我还在github上共享资源一下DBFlow的配备

https://github.com/taoweiji/DBFlowExample

 

 

    关键字:

天才代写-代写联系方式