Android数据库之DBFlow初使用

Android数据库之DBFlow初使用

简介

DBFlow是一个基于AnnotationProcessing(注解处理器)的强大、健壮同时又简单的ORM框架。
此框架设计为了速度、性能和可用性。消除了大量死板的数据库代码,取而代之的是强大而又简介的API接口。
DBFlow使数据库的操作变得简洁而稳定,让您能够更专注地编写令人惊讶的APP。

为什么使用DBFlow?
  • 扩展性强
  • 速度快效率高
  • 上手快
  • 开源
  • Robust
  • 无缝支持多数据库文件
  • 基于SQLite
使用步骤
1.在Module级别的gradle中添加以下配置
  • app的build.gradle中添加
def dbflow_version = "3.0.0-beta2"
//DBFlow
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-sqlcipher:${dbflow_version}"

如图:
这里写图片描述
- 项目build.gradle中添加:

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

如图
这里写图片描述

这样就完成了,但是如果你看了官方文档的话一定有疑问因为官方文档还需要添加两个东西

//这是在项目build.gradle
buildscript {
    repositories {
      // required for this library, don't use mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    }
}
//这是在app build.gradle中添加
apply plugin: 'com.neenbedankt.android-apt'
apt 'com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}'

然而博主按照官方文档添加后出现了这样的问题:

android-apt plugin is incompatible with the Android Gradle plugin.  Please use 'annotationProcessor' configuration instead.

如果你按照官方文档出现了这样的问题请像下面这样配置:

//删除或注释这两句代码
 classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
 apply plugin: 'com.neenbedankt.android-apt'
 //然后把这句代码apt替换成annotationProcessor然后就不会出错啦
 apt 'com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}'
2.初始化DBFlow
public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        FlowManager.init(this);
    }
}
3.创建数据库
@Database(name = SchoolDatabase.NAME,version = SchoolDatabase.VERSION)
public class SchoolDatabase {
    //数据库名称
    public static final String NAME = "Colonies";
    //版本号
    public static final int VERSION  = 1;
}
4.创建表

新建 School类,并用注解 @Table 标注,指定它的数据库为 SchoolDatabase ;用 @PrimaryKey 标注 id 为主键,并且为自增长;用 @Column 标注 name 为表中的一列。

@Table(database = SchoolDatabase.class)
public class School extends BaseModel {
    @PrimaryKey(autoincrement = true)
    long id;
    @Column
    String name;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

这里我们继承的 BaseModel 是 DBFlow 给我们提供的,不是自己创建的 ,继承的目的官方文档的解释是:

每个与数据库连接的ORM对象类都必须继承Model接口。这是为了确保这些对象都能有相同的一些方法。通常为了方便我们继承BaseModel类,这个类也是Model的标准实现。

一个正确的数据表类需要以下几项:

  1. 对类添加@Table注解
  2. 声明所连接的数据库类,这里是ColonyDatabase。
  3. 定义至少一个主键。
  4. 这个类和这个类中数据库相关列的修饰符必须是包内私有或者public。
  5. 这样生成的_Adapter类能够访问到它。

列(Column)属性可以是private,但这样就必须指定公有public的getter和setter方法

温馨提示:创建完所需要的表后需要点击 AndroidStudio 的 Build -> Make Project 之后,这样你就可以在 app\build\generated\source\apt\debug 目录下找到生成的类 School_Table,在里面可以看到一些 SQL 语句。

5.操作数据库
  1. 添加数据
 private void insertData() {
        School school = new School();
        school.setName("xxxx学院");
        school.save();
    }

对于已经继承了 BaseModel 的 bean,我们可以直接 new 一个出来,给相应的属性赋值之后,直接调用 save() 方法,数据就保存完毕了,代码如下。

  1. 查找数据
 private void queryData() {
        List<School> list = SQLite.select().from(School.class).orderBy(School_Table.id,true)//排序
        .queryList();
    }

温馨提示:Product_Table 是 apt 给我们生成的,使用起来也很灵活易懂,当然其他的更为复杂的建议大家可以查看一下官方文档。
3. 更新数据

private void updateData() {
        School school = SQLite.select().from(School.class).where(School_Table.id.eq(1111)).querySingle();
        if (school.getName().equals("xxx")){
            school.setName("1111");

        }else {
            school.setName("xxxx");
        }
        school.update();

    }

这里我做了一个简单的判断我就不多说了
4. 删除数据

 private void deleData() {
 //第一种方法
//        School school = SQLite.select().from(School.class).where(School_Table.name.eq("xxxx")).querySingle();
//        Log.e(TAG,school.toString());
//        school.delete();
//第二种方法
        SQLite.delete(School.class).where(School_Table.name.eq("xxxxx")).execute();
    }

以上就是DBFlow简单的操作,如果你还需继续探索可以参考下面学习链接
温馨提示:DBFlow博主目前还没有找到多表查询的操作虽然官网有说由于博主比较笨还没领悟到,其他操作可以参考:https://www.jianshu.com/p/0c017a715410

参考学习链接
官方文档(中文):https://yumenokanata.gitbooks.io/dbflow-tutorials/content/index.html
官方文档(英文):https://yumenokanata.gitbooks.io/dbflow-tutorials/content/index.html
GitHub地址(官方) :https://github.com/Raizlabs/DBFlow
本博客参考链接 :https://www.jianshu.com/p/0c017a715410
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值