目前最好用的安卓数据库,DBFlow使用详解

1.在你使用之前,建议你先阅读一下官方文档
https://agrosner.gitbooks.io/dbflow/content/
2.步骤如下:
(1)在项目级的gradle中添加

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.2'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url "https://www.jitpack.io" }
    }
}

(2)在Module级别的gradle中添加

apply plugin: 'com.neenbedankt.android-apt'
def dbflow_version = "4.0.2"


dependencies {
    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}"
    // sql-cipher database encyrption (optional)
    compile "com.github.Raizlabs.DBFlow:dbflow-sqlcipher:${dbflow_version}"
}

(3)在你的Application的onCreate()方法中初始化

@Override
    public void onCreate() {
        super.onCreate();
        FlowManager.init(new FlowConfig.Builder(this).build());
//      FlowManager.init(this);//这句也可以初始化
    }

(4)新建AppDatabase类,配置数据库相关参数

package song.peter.com.custompassword.dbflow;

import com.raizlabs.android.dbflow.annotation.Database;
import com.raizlabs.android.dbflow.annotation.Migration;
import com.raizlabs.android.dbflow.sql.SQLiteType;
import com.raizlabs.android.dbflow.sql.language.SQLite;
import com.raizlabs.android.dbflow.sql.migration.AlterTableMigration;
import com.raizlabs.android.dbflow.sql.migration.BaseMigration;
import com.raizlabs.android.dbflow.structure.database.DatabaseWrapper;

/**
 * Created by peter on 2017/5/19.
 */

@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)
public final class AppDatabase {
    //数据库名称
    public static final String NAME = "AppDatabase";
    //数据库版本号
    public static final int VERSION = 1;

}

(5)新建数据库表

package song.peter.com.custompassword.dbflow;

import com.raizlabs.android.dbflow.annotation.Column;
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
import com.raizlabs.android.dbflow.annotation.Table;
import com.raizlabs.android.dbflow.structure.BaseModel;

import java.util.UUID;

/**
 * Created by peter on 2017/5/19.
 * 要继承BaseModel,这个类已经实现了增删改查的方法
 */

@Table(database = AppDatabase.class)
public class UserData extends BaseModel {
    @PrimaryKey(autoincrement = true)//ID自增
    public long id;

    /**
     * 姓名
     */
    @Column
    public String name;

    /**
     * 年龄
     */
    @Column
    public int age;

    /**
     * 性别
     */
    @Column
    public boolean sex;

//备注:DBFlow会根据你的类名自动生成一个表明,以此为例:
//这个类对应的表名为:UserData_Table,这是作者在实践中得出来的
}

(6)具体使用

UserData userData = new UserData();
ModelAdapter<UserData> adapter = FlowManager.getModelAdapter(UserData.class);

 userData.id = 1;//这一行必须加,必须指定id,后面才能根据id修改某一条的数据
 userData.name = "张三";
 userData.age = 99;
 userData.sex = true;

adapter.insert(userData);//插入
adapter.delete(userData);//删除
adapter.update(userData);//修改
//修改的时候的代码
UserData userData = new UserData();
userData.id = 1;
userData.name = "9999";
userData.update();//只有继承了BaseModel才能用这个方法,否则调用这个方法adapter.update(userData);

//再来点福利,update高级用法,增删改查都是同理,就不一一列举了
SQLite.update(UserData.class).set(UserData_Table.name.eq("888")).where(UserData_Table.id.eq(1)).execute();
//UserData_Table就是DBFlow自动生成的表明,在(5)的备注中已经提到了

//查询
List<UserData> list = SQLite.select().from(UserData.class).queryList();

(7)数据库增加字段
7.1 修改数据库的版本号

public static final int VERSION = 2;

7.2 修改数据库表结构

 @Column
    public String content;//增加的字段

7.3 这个时候,需要Make Project一下,Mac版的可以直接commond+F9 ,或者直接点那个按钮
7.4 在AppDatabase这个数据库配置类中,添加方法如下:

/**
     * 数据库的修改:
     * 1、PatientSession 表结构的变化
     * 2、增加表字段,考虑到版本兼容性,老版本不建议删除字段
     */
    @Migration(version = VERSION, database = AppDatabase.class)
    public static class Migration2UserData extends AlterTableMigration<UserData> {

        public Migration2UserData(Class<UserData> table) {
            super(table);
        }

        @Override
        public void onPreMigrate() {
            addColumn(SQLiteType.TEXT, "content");
        }
    }

(8)到此,关于DBFlow相关的介绍也就结束了,具体关于内连,外联,左联接,右联接,外键,一对多等等,可以查阅官方文档。
https://agrosner.gitbooks.io/dbflow/content/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,431评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • 大部分的后端会很很鄙视前端。我也不知道为什么,可能大部分人都会觉得脚本语言根本不算语言。 大多人 会叫我们切图仔,...
    小黑的眼阅读 3,306评论 0 15
  • 你知道吗? 其实,我没有那么想你。 只是偶尔听到了一首歌, 便忍不住想起了你。 我没有那么想你,所以,也不知道该不...
    张盟阅读 874评论 0 3
  • “这样吧,你试着写一下今天上午会议的信息,给宣传部报过去。”“写东西,我实在是不擅长,写点小心情啥的还凑活,这种公...
    乐小磊阅读 387评论 0 3